【问题标题】:run jar in debug mode from terminal从终端以调试模式运行 jar
【发布时间】:2018-10-23 11:22:13
【问题描述】:

我正在使用 intellij idea IDE,我正在尝试以调试模式从终端运行我的 jar 文件,并在代码中的几个位置设置断点。

我使用的命令是:java -jar myTestApp.jar -file "myfile.txt" -users myUser -Xdebug -Xrunjdwp:transport=dt_socket,server=127.0.0.1,suspend=n,address=8080

问题是我也在使用 commons-cli 库,所以 -Xdebug 和 -Xrunjdwp 参数不被识别为选项,我得到: 知道如何解决这个问题吗?

【问题讨论】:

    标签: java apache-commons-cli


    【解决方案1】:

    请假设问题的作者在 2018 年没有使用 Java 5:

    java -agentlib:jdwp=transport=dt_socket,address=8080,server=y,suspend=n -jar myTestApp.jar -file "myfile.txt -users myUser

    顺便说一句:如果您使用 Java 9 and later:将 address=8080 更改为 address=*:8080,因为 localhost 不再是默认设置。

    停止告诉人们使用-Xdebug-Xrunjdwp

    Xdebug 在 Java 5 及更低版本中使用。从 Java 6 开始,-agentlib 可用。 Xdebug 允许通过Xrunjdwp 访问调试器。如果您使用Xdebug,JIT 现在以兼容模式启动,并且使用旧版调试器会极大地减慢您的调试速度。人们告诉然后使用-Djava.compiler=NONE 禁用兼容模式或添加-Xnoagent 以禁用旧版调试器。不要这样做使用-agentlib

    【讨论】:

    • “Java 9 及更高版本”链接已损坏。
    • 更新了“Java 9 及更高版本”链接以显示 JDK 概述,因为 oracle 页面结构发生了变化。感谢您的提示。 @LukeHutchison
    【解决方案2】:

    在指定要运行的类或 jar 之后,Java 只需要程序参数。因此,只需尝试在此之前放置您的 JVM 选项:

    java -Xdebug -Xrunjdwp:transport=dt_socket,server=127.0.0.1,suspend=n,address=8080 -jar myTestApp.jar -file "myfile.txt" -users myUser 
    

    【讨论】:

    • 谢谢,这有效(它没有抛出错误),但执行仍然没有在断点处停止。我做错了什么?
    • 尝试使用suspend=y,这会使程序在初始化后立即停止并等待调试器连接。此外,由于您使用的是 IntelliJ,您可以为外部 jar 创建运行配置,并在调试模式下启动它。
    • 投反对票,因为这个答案会严重影响性能并且多年来已被弃用。请参阅我的答案以获取最新的解决方案。
    • 我使用了原始问题的确切论据,这不是我的具体建议。
    • @Damarus 我明白这一点。但是,即使不是故意的,您也在传播不良信息。很抱歉,由于信息过时,您的回答不应该有很高的排名。
    【解决方案3】:

    这对我有用

    java -jar -Xdebug  -agentlib:jdwp="transport=dt_socket,server=y,suspend=n,address=5000" core-service-1.0-SNAPSHOT.jar
    

    【讨论】:

    • 我需要在服务器上运行这个 jar 并在 eclipse 中作为远程 java 应用程序在本地机器上调试代码。所以我在服务器上用这个来启动jar
    【解决方案4】:

    -Xdebug 应该移到 -jar 参数的前面。现在 Java 认为它是程序参数的一部分。

    【讨论】:

    • 不应再使用 Xdebug,因为这是 Java 5 参数!
    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2016-09-23
    • 2015-07-25
    • 2016-07-01
    • 2010-10-20
    相关资源
    最近更新 更多