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

Jon*_*Jon 5 java debugging jar intellij-idea

我一直在努力想出这个问题,而不是采用正确的方法.我仔细阅读了这个问题,我已经尝试过这个问题,但是它运行得不对..使用IntelliJ EAP 142.4675.3

我想要做的是使用我放入JAVA_HOME\jre\lib\ext的jar(扩展Provider类)文件来调试junit测试.我希望那个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不会打开源代码,但是,当我这样做时,它会看到它两次.

小智 0

那么让我们从头开始:

  • 文件 > 新建项目,选择“Java Module”,填写表格:捕获1
  • 单击“完成”,绕过询问项目类型(网络应用程序等)的表单
  • 您现在有一个带有目录的项目src捕获2
  • 右键单击该32910506目录并选择“新建”,然后选择“目录”并创建一个名为 lib 的新目录。
  • 将 2 个 jar(源代码和代码)拖放到此目录(我将common-lang在本示例中使用),注意复制,而不是移动: 捕获3
  • 现在右键单击src,选择“新建”,“Java 类”,命名为App捕获4
  • 右键单击“代码 jar”并选择“添加为库”: 捕获5
  • 输入App类型psvm然后点击TAB得到 amain并像这样填充它: 捕获6
  • 右键单击“代码 jar”并选择“打开库设置”: 捕获7
  • 单击“+”并选择“附加文件或目录”并选择您的“源 jar”: 捕获8
  • 现在,如果您在应用程序中Ctrl单击+单击random,您应该最终会看到方法源: 捕获9
  • 在方法中放置一个断点random

捕获10

  • 现在右键单击App,选择“Debug App.main()”,您应该结束到上一个断点: 捕获11 捕获12

使用:linux下idea 12.1.6