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

Java 配置IntelliJ以使用反编译jar源代码的正确方法,java,debugging,intellij-idea,jar,Java,Debugging,Intellij Idea,Jar,我一直在想这个问题,但没有找到正确的方法。我通读了一遍,我已经试过了,但效果不太好。。使用IntelliJ EAP 142.4675.3 我要做的是,使用我放在JAVA_HOME\jre\lib\ext中的jar(扩展提供程序类)文件调试junit测试。我希望该jar也可以调试 问题是,如果我附加我的源目录作为jar的源,那么在堆栈跟踪中,当我单击命名文件(包含我希望查看的方法)时,IntelliJ会让我在同一文件的两个文件中进行选择,可能是因为它知道源(它在我项目的一个模块中)通过我添加的ja

我一直在想这个问题,但没有找到正确的方法。我通读了一遍,我已经试过了,但效果不太好。。使用IntelliJ EAP 142.4675.3

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

问题是,如果我附加我的源目录作为jar的源,那么在堆栈跟踪中,当我单击命名文件(包含我希望查看的方法)时,IntelliJ会让我在同一文件的两个文件中进行选择,可能是因为它知道源(它在我项目的一个模块中)通过我添加的jar源路径,还可以了解源代码

我尝试将provider.jar添加到projectmoduledependencies选项卡中,这让intellij非常伤心。恢复到jre\lib\ext中,在平台设置->SDK->1.8->源路径选项卡中,我添加了模块Sourcepath。这使得intellij可以进入jar的.java文件,而不是.class文件,但是,当它这样做时,我现在在代码窗口的顶部会看到一个横幅,上面写着“类xxx可用的替代源代码”,RHS有一个组合框,其中模块名列出了两次(在最新的EAP中,它实际上列出了模块和jar)[与module同名,带.jar])。并且,如前所述,当我单击堆栈跟踪中的文件时,IDE会询问我希望编辑哪个(非常相同的)文件


很明显,有些地方不太正确。我遗漏了什么?我觉得奇怪的是,ide在进入jar时不会打开源代码,直到我像上面那样附加代码,但是,当我这样做时,它会看到它两次。

所以让我们从头开始:

  • 文件>新建项目,选择“Java模块”,填写表格:
  • 点击“完成”,绕过询问项目类型(webapp等)的表单
  • 您现在有了一个带有
    src
    dir的项目:
  • 右键单击
    32910506
    目录,选择“新建”,然后选择“目录”,并创建一个名为lib的新目录
  • 将2个JAR(源代码和代码)拖放到此目录(我将在本例中使用),注意复制,不要移动:
  • 现在右键单击
    src
    ,选择“新建”、“Java类”,将其命名为
    App
  • 右键单击“代码jar”并选择“添加为库”:
  • App
    中键入
    psvm
    ,然后点击选项卡以获取
    main
    并按如下方式填充:
  • 右键单击“代码jar”并选择“打开库设置”:
  • 单击“+”并选择“附加文件或目录”,然后选择“源jar”:
  • 现在,如果在应用程序中按住Ctrl键并单击“随机”,则应返回方法源:
  • random
    方法中放置断点:

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


使用:linux下的idea 12.1.6我认为值得一读。请参阅第一个链接相当于我链接到的q中的答案的总结……第二个链接非常糟糕。我从jre\lib\ext目录中删除了jar,然后通过依赖项选项卡runtime scope添加了一个副本。现在,在运行junit测试时,intellij抱怨它无法无法在out\production\blahblah中验证jar。