2017-08-30 47 views
3

我使用下面的配置调试jar文件,在我的根项目下,当我点击调试程序开始运行,但没有采样,因为我没有设置任何断点(因为这是jar文件:)),在node.js中有选项与--inspect-brkinfo做到这一点,其停在第一条语句,但不知道怎么做的jar文件调试JAR intellij或命令行

我的问题是

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

enter image description here

Oterwise,你怎么能调试罐子,如果你不能设置一个断点...

编辑:

我已经试过与建议crazycoder的,它不工作,任何想法?

我想什么是我的下根项目decomplie文件夹中创建并运行以下命令

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

我erorr没有找到

的,当然我也有

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

无法找到或加载主类 org.jetbrains.java.decompiler.main.decompiler.Console反编译器

如何获取此jar(fernflower.jar)或路径?

EDIT2

我的项目是这样

-myjavaproj 

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

回答

1

针对您的特殊项目,该项目是一个jar文件(zte.jar),其中包含deps.zip里面又包含其他.jar依赖关系,并完全没有来源,并且还使用了反射和自定义类加载器以加载和deps.zip使用.jar文件;为调试工作,你必须一切从deps.zip罐子解压到某个位置,然后再做出新的IntelliJ IDEA的项目和所有的罐子(包括根从deps.zipzte.jarand all the jars包装)加入到module dependencies

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

+0

目前我能够调试'.class'文件,但由于它是非编译文件,所以很难跟踪流程,Intellij有没有办法调试解压后的'.java'文件?(在我运行命令' java -cp ...')我得到了解压文件夹中的所有.java文件...谢谢! –

1

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

因此,您不会在第一行自动停止,您需要在IDEA中添加断点并将其手动附加到JVM进程。这里解释How to remote debug JVM

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

+0

评论是不适合扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/153267/discussion-on-answer-by-gerben84-debug-jar-intellij-or-command-line)。 –