【问题标题】:Proper way to configure IntelliJ to use source code for decompiled jar配置 IntelliJ 以使用反编译 jar 的源代码的正确方法
【发布时间】:2015-12-30 20:39:48
【问题描述】:

我一直在尝试解决这个问题,但没有想出正确的方法。我通读了this question,我已经尝试过了,但它的工作不太正常……使用 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 在进入 jar 时不会打开源代码,但是,当我这样做时,它会看到它两次。

【问题讨论】:

  • 第一个链接几乎总结了我链接到的 q 中的答案......第二个,真的很糟糕。我从 jre\lib\ext 目录中删除了 jar,然后通过依赖项选项卡、运行时范围添加了一个副本。现在,在运行 junit 测试时,intellij 抱怨它无法验证 out\production\blahblah 中的 jar。

标签: java debugging intellij-idea jar


【解决方案1】:

那么让我们从头开始吧:

  • 文件>新建项目,选择“Java模块”,填写表格:
  • 通过单击“完成”绕过询问项目类型(webapp 等)的表单
  • 您现在有一个带有src 目录的项目:
  • 右键单击32910506 目录并选择“新建”然后选择“目录”并创建一个名为lib 的新目录。
  • 将你的 2 个 jars(源代码和代码)拖放到这个目录(我将在这个例子中使用 common-lang),注意复制,不要移动:
  • 现在右键单击src,选择“新建”、“Java 类”,将其命名为App
  • 右键单击“代码 jar”并选择“添加为库”:
  • App 中输入psvm 然后点击TAB 得到main 并像这样填写:
  • 右键单击“代码 jar”并选择“打开库设置”:
  • 单击“+”并选择“附加文件或目录”并选择您的“源 jar”:
  • 现在如果你的Ctrl+点击App中的random,你应该会看到方法源:
  • random 方法中放置一个断点:

  • 现在右击App,选择“Debug App.main()”,你应该结束到上一个断点:

使用:linux下的idea 12.1.6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 2010-10-18
    • 2016-11-19
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多