调试JAR intellij或命令行

时间:2017-08-30 11:47:23

标签: java shell debugging intellij-idea jar

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

我的问题是

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

enter image description here

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 

2 个答案:

答案 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将对其进行反编译,放置断点,进行调试。