【问题标题】:Debug JAR intellij or command line调试 JAR intellij 或命令行
【发布时间】:2017-08-30 11:47:23
【问题描述】:

我使用以下配置我的根项目下的调试 jar 文件,当我单击调试时,程序开始运行但由于我没有设置任何断点而没有停止(因为这是 jar 文件:)) , 在 node.js 中,有一个选项可以使用 --inspect-brk info 在第一条语句上停止但不确定如何在 jar 文件上执行此操作

我的问题是

  1. 如何在程序 jar 的 第一行 中停止?
  2. 我的配置正常吗?

另外,如果你不能设置断点,你怎么能调试jar...

编辑:

我已经尝试了 crazycoder 的建议,但它不起作用,你知道吗?

我尝试的是在我的根项目反编译文件夹下创建并运行以下命令

 java -jar fernflower.jar zte.jar + decomplie/

我当然没有找到错误

我也试过

java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler zte.jar + decomplie/ 

无法找到或加载主类 org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler

如何获得这个 jar (fernflower.jar) 或它的路径?

EDIT2

我的项目是这样的

-myjavaproj

 --zte.jar
 --decomile
 ---zte.jar
 ---com.proj.cli
 ----appmain.java 

【问题讨论】:

    标签: java shell debugging intellij-idea jar


    【解决方案1】:

    对于您的特定项目,它是一个 jar 文件 (zte.jar),其中包含 deps.zip,其中又包含其他 .jar 依赖项并且根本没有源,并且还使用反射和自定义类加载器来加载和使用deps.zip 中的 .jar 文件;要使调试器正常工作,您必须将 deps.zip 中的所有 jar 解压缩到某个位置,然后创建一个新的 IntelliJ IDEA 项目并添加所有 jar(包括从 deps.zip 解压缩的根 zte.jar and all the jars)进入module dependencies

    浏览到self.jar里面的CliExecutor,在项目视图中,IntelliJ IDEA会反编译,下断点,调试。

    【讨论】:

    • 目前我能够调试 .class 文件,但由于它是反编译的文件,因此很难跟踪流程,Intellij 有没有办法调试反编译的 .java 文件?(之后我运行命令`java -cp ...`)我在反编译文件夹中得到了所有.java文件...谢谢!
    【解决方案2】:

    您的配置有点奇怪,但正确。您提供的 VM 选项告诉 JVM 等待运行 zte.jar,直到附加调试器。

    所以你不会自动停在第一行,你需要在 IDEA 中添加断点并手动附加到 JVM 进程中。这在这里解释How to remote debug JVM

    请记住,您做错了一件事。您无需在 VM 选项中设置调试选项。只需选择要调试的 JAR,放置断点并以调试模式启动(即 IDEA 中的 bug 图标)。

    【讨论】:

    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多