【问题标题】:Spring boot application not honoring VM options for server portSpring Boot 应用程序不支持服务器端口的 VM 选项
【发布时间】:2018-09-01 18:14:36
【问题描述】:

我正在使用 IntelliJ、Maven、Spring-boot。

我正在尝试使用 VM 选项(第三个选项卡(运行器),取消选中“使用项目设置”)将端口设置为 8001,如堆栈溢出的许多答案中给出的那样。这是我尝试过的 2 个选项。

-Dmaven.tomcat.port=8001
-Dserver.port=8001

然而,tomcat 服务器在默认的 8080 端口上启动。

但是,如果我在 application.properties 上声明端口:

server.port=8001

它工作正常。如何使用 VM 选项运行它。我不想以编程方式提供它或在 application.properties 中进行配置。

我已经尝试过: Spring Boot - how to configure port

还有一些其他的。

请注意,我使用 intelliJ 上提供的调试/运行按钮运行

控制台将命令显示为:

/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:56655,suspend=y,server=n -Dmaven.multiModuleProjectDirectory=/Users/barora/gitHub/microservice/currency-exchange-service -Dserver.port=8001 "-Dmaven.home=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3" "-Dclassworlds.conf=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/m2.conf" -javaagent:/Users/barora/Library/Caches/IntelliJIdea2017.3/captureAgent/debugger-agent.jar=/private/var/folders/g5/6nfrnqnj2tz_z0q8h9ckhbqjwmtnv2/T/capture127.props -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds-2.5.2.jar:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar" org.codehaus.classworlds.Launcher -Didea.version=2017.3.4 spring-boot:run

在哪里可以看到-Dserver.port=8001

但是它从 8080 开始:

2018-03-23 00:10:09.092  INFO 48261 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)

【问题讨论】:

  • 您是否尝试在 application.properties 文件中添加端口号?
  • 文档中没有提到 -D 选项。但 --server.port=8001 是:docs.spring.io/spring-boot/docs/current/reference/html/… - 你能试试吗?
  • @wemu ,我试过了,它给了我:无法识别的选项:--server.port=8001 错误:无法创建 Java 虚拟机。错误:发生了致命异常。程序将退出。
  • @UditKumawat 阅读我的第 5、6 和 7 行。
  • 这不起作用,因为您使用了错误的属性。例如,请参见此处的示例:docs.spring.io/spring-boot/docs/current/maven-plugin/examples/… - maven 插件文档状态:docs.spring.io/spring-boot/docs/current/maven-plugin/… - 用于运行目标的 jvmArguments 的用户属性是“spring-boot.run.jvmArguments” - 所以在命令行上使用 -D 选项: mvn spring-boot:run -Dspring-boot.run.jvmArguments="..." - 使用错误的参数名称时,您的选项不会被选中。

标签: java spring maven spring-boot intellij-idea


【解决方案1】:

好的,这是一个老问题,但这是我在谷歌得到的第一个结果。这就是我所做的,基于https://stackoverflow.com/a/37215726/1922026中的答案:

我没有使用-Dserver.port=8090,而是使用-Dspring-boot.run.jvmArguments='-Dserver.port=8090'

请注意,此参数仅在 fork=true 时有效:https://github.com/spring-projects/spring-boot/issues/7588

【讨论】:

    【解决方案2】:

    我遇到了和你一样的问题。然后我意识到 .idea/ 文件夹里面,存在一个名为 workspace.xml 的文件,并且有一个标签怎么说:

    <option name="VM_PARAMETERS" value="-Dserver.port=8081" />
    

    更改此选项,服务器端口将更改(至少在我的情况下有效)。

    我希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2016-04-24
      • 2015-11-30
      • 2016-12-18
      • 1970-01-01
      相关资源
      最近更新 更多