Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么spring boot在打包(使用gradle)时不加载应用程序yml?_Java_Spring Boot_Gradle - Fatal编程技术网

Java 为什么spring boot在打包(使用gradle)时不加载应用程序yml?

Java 为什么spring boot在打包(使用gradle)时不加载应用程序yml?,java,spring-boot,gradle,Java,Spring Boot,Gradle,到目前为止还没有发现任何有趣的东西,所以我来问一个问题 我有一个spring boot应用程序,运行良好。问题是:自定义配置! 我希望它在端口8081(而不是默认端口8080)上运行。所以我在src/main/resources目录中添加了application.yml,并将其打包。。。它在8080端口上运行 当我从intellij运行@SpringBootApplication类时,它确实在端口8081上运行(我刚刚添加了application.yml文件)。那么为什么呢 这是一个gradle

到目前为止还没有发现任何有趣的东西,所以我来问一个问题

我有一个spring boot应用程序,运行良好。问题是:自定义配置! 我希望它在端口8081(而不是默认端口8080)上运行。所以我在src/main/resources目录中添加了application.yml,并将其打包。。。它在8080端口上运行 当我从intellij运行@SpringBootApplication类时,它确实在端口8081上运行(我刚刚添加了application.yml文件)。那么为什么呢

这是一个gradle多模块项目。T将application.yml文件添加到模块中,该模块实际上打包到jar文件中。它使用gradle shadow插件打包,并且在jar文件的根目录下包含application.yml文件

application.yml如下所示:

server:
    port: 8081
我真的不知道你需要哪些信息,所以尽管问吧

任何想法都欢迎

编辑1: 启动服务器时的“Stacktrace”:

java -jar serverApp.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                        

août 29, 2020 5:50:54 PM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["http-nio-8080"]
août 29, 2020 5:50:54 PM org.apache.catalina.core.StandardService startInternal
INFOS: Starting service [Tomcat]
août 29, 2020 5:50:54 PM org.apache.catalina.core.StandardEngine startInternal
INFOS: Starting Servlet engine: [Apache Tomcat/9.0.37]
août 29, 2020 5:50:54 PM org.apache.catalina.core.ApplicationContext log
INFOS: Initializing Spring embedded WebApplicationContext
août 29, 2020 5:50:55 PM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["http-nio-8080"]

在看不到实际代码的情况下,我可以推荐两种方法来尝试

1-你是否错过了在主要方法中使用论点-

public static void main(String[] args) {
    SpringApplication.run(ServerApplication.class, args);
}
2-尝试使用参数启动springboot服务器-

java -jar -Dserver.port=8081 ServerApplication.jar

根据评论,Shadow插件似乎不适合与Spring Boot一起使用:

启动框架有自己的gradle插件和打包可编辑jar文件的方法。我不认为我会在同一个项目中结合shadow和boot插件。它们会相撞


还有。

请与我们分享您的stacktrace和code@SkillsIndexOutOfBounds代码的哪一部分?这不应该是完整的跟踪。请添加一个完整的。1-它看起来像这样,带有args等。2-尝试过,甚至不起作用。。。。我确实希望它存在于属性/yml文件中,但即使在命令行中也不起作用…我的坏选项2起作用了,我的终端隐藏了一些字符,所以我有-dservrer.port--“我还是喜欢它存在于文件中,有什么想法吗?@Mlem,要在文件中修复它,您还必须共享代码,我确信这一定是您正在犯的一些小错误。”。如果选项2解决了您的问题,请批准/追加投票。您需要代码的哪一部分?我没有与这个属性相关的代码,很确定它也是次要的,我想当我找到它时,我会觉得自己很愚蠢,但在atm机上看不到它…只是像主类一样的项目脚手架,build grdle,application.yaml。把它放到你的github repo上,分享链接。看来你是对的。花了我一段时间,升级gradle时遇到了一些问题,我脑子里不太清楚,不确定是否完全升级了,但至少包装器是,项目编译,没有更多的影子战争,只有gradle插件,这很好:)谢谢!