我使用以下配置调试jar文件,在我的根项目下,当我点击调试程序开始运行但没有停止,因为我没有设置任何断点(因为这是jar文件:)) ,在node.js中可以选择使用--inspect-brk
info,它在第一个语句中停止但不确定如何在jar文件上执行
我的问题是
- 如何在程序jar的第一行中停止?
- 我的配置是否正常?
醇>
Oterwise,如果你不能设置一个断点,怎么能调试jar ...
编辑:
我已经尝试过使用crazycoder的建议而且它没有用,有什么想法吗?
我尝试在我的根项目decomplie文件夹下创建并运行以下命令
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
答案 0 :(得分:1)
你的配置有点奇怪,但是正确的。您提供的VM选项告诉JVM在运行zte.jar之前等待,直到连接调试器。
因此,您不会在第一行自动停止,您需要在IDEA中添加断点并将其手动附加到JVM进程。这在How to remote debug JVM
中解释请记住,你做错了一件事。您无需在VM选项中设置调试选项。只需选择要调试的JAR,放置断点并以调试模式启动(即IDEA中的错误图标)。
答案 1 :(得分:1)
对于您的特定项目,它是一个包含zte.jar
的jar文件(deps.zip
),其中包含其他.jar
个依赖项,根本没有任何来源,并且还使用了反射和自定义类加载器为了加载和使用.jar
中的deps.zip
文件;要使调试器工作,您必须将deps.zip
中的所有jar解包到某个位置,然后创建一个新的IntelliJ IDEA项目并添加所有jar(包括根zte.jar
and all the jars已从deps.zip
解压缩到module dependencies。
浏览到CliExecutor
内的self.jar
,在项目视图中,IntelliJ IDEA将对其进行反编译,放置断点,进行调试。