配置IntelliJ以使用反编译jar的源代码的正确方法

时间:2015-10-02 15:19:53

标签: java debugging intellij-idea jar

我一直试图想出这一点,没有提出正确的方法。我仔细阅读了this question,我已经尝试过了,但它工作不正常..使用IntelliJ EAP 142.4675.3

我要做的是使用jar(扩展Provider类)文件来调试junit测试,该文件放在JAVA_HOME \ jre \ lib \ ext中。我希望那个jar也可以调试。

问题是,如果我将源目录作为jar的源附加,那么,在堆栈跟踪中,当我单击指定文件(包含我想查看的方法)时,IntelliJ要求我在两个之间进行选择同一个文件,大概是因为它知道源(它在我的项目中的模块中),并且它也通过我添加的jar源路径被告知了源。

我尝试将provider.jar添加到项目模块依赖项选项卡,这导致intellij没有结束悲伤。恢复到jre \ lib \ ext中,并且在Platform Settings-> SDKs-> 1.8-> Sourcepath选项卡中,我添加了模块源路径。这让intellij进入jar的.java文件,而不是.class文件,但是,当它这样做时,我现在在我的代码窗口的顶部得到一个横幅,上面写着"该类可用的替代源代码XXX"在RHS中有一个组合框,模块名称列出两次(在最新的EAP中,它实际上列出了模块和jar [与模块同名,带.jar])。并且,如前所述,当我单击堆栈跟踪中的文件时,IDE会询问我希望编辑哪个(相同的)文件。

显然,有些事情不太正确......我错过了什么?我发现奇怪的是,当我按照上面的代码附加代码时,ide不会打开源代码,但是,当我这样做时,它会看到它两次。

1 个答案:

答案 0 :(得分:0)

所以让我们从头开始:

  • 文件>新建项目,选择" Java模块",填写表格:capture1
  • 点击"完成"绕过询问项目类型(webapp等)的表格。
  • 您现在拥有一个src目录的项目:capture2
  • 右键单击32910506目录并选择" New"然后"目录"并创建一个名为lib的新目录。
  • 将您的2个罐子(来源和代码)拖放到此目录中(我将在此示例中使用common-lang),谨防复制,而不是移动: capture3
  • 现在右键单击src,选择"新"," Java类",将其命名为Appcapture4
  • 右键单击您的"代码jar"并选择"添加为库": capture5
  • App类型psvm中,然后点击 TAB 获取main并填写如下: capture6
  • 右键点击您的"代码jar"并选择"打开库设置": capture7
  • 点击" +"并选择"附加文件或目录"并选择你的"来源jar": capture8
  • 现在,如果你的 Ctrl +点击App中的random,你应该最终得到方法来源: capture9
  • random方法中设置一个断点:

capture10

  • 现在右键单击App,选择" Debug App.main()",您应该结束上一个断点: capture11 capture12

使用:linux下的想法12.1.6