IntelliJ ctrl-click引用.class文件而不是.java文件

时间:2017-06-09 21:07:32

标签: java intellij-idea

我在.groovy文件中有以下代码行供测试:

GenerateShipConfirmsForBatch gscb = new GenerateShipConfirmsForBatch();

按住Ctrl键并单击GenerateShipConfirmsForBatch会将我带到.jar中的GenerateShipConfirmsForBatch.class,而不是.java文件,即使我在顶部正确导入了类。我希望它引用.java文件,以便它接收我对.java文件所做的更改。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

首先猜测 - 导入错误

你写的内容在我看来就像你在2个不同的包或导入的项目中使用相同名称的类而不是在开放的java类中。导入类时请注意导入要使用的类。

EG。注释类服务在不同的包中被广泛使用。

import org.springframework.stereotype.Service;
import com.google.web.bindery.requestfactory.shared.Service;

只需检查您是否使用了正确的导入。

第二次猜测 - 错误地设置模块

如果您拥有多模块应用程序,则必须正确设置父项目以正确解决此问题以及链接也应该是子项目。

Maven 中,使用pom.xml完成。在Maven - Guide to Working with Multiple Modules中很好地解决了这个问题。

Gradle 中,使用build.gradle完成。您可以阅读更多相关信息Gradle Multi-Module Project Setup

关于类

的基础知识

本地班级

Idea会优先关联本地.java文件,而不是.class,因此如果发生这种情况,我建议重新安装Idea,因为我找不到正确的方法。

链接类(来自外部库)

如果您已导入外部库,它将链接到.class,因为它是从.jar文件反编译的。

如果您使用.jar点击Maven Projects,则可以使用源代码下载Download Sources and/or Documentation

答案 1 :(得分:1)

仅仅因为您在顶部导入了类并不意味着您可以查看源代码(例如,.java文件)。如果此类来自pom.xmlbuild.gradle文件中定义的依赖项,那么您可能无权查看源代码。但是,如果这是您在项目顶层的单独模块,那么您将能够查看.java文件。如果这个库是开源的,那么我建议在项目中克隆它并将其作为模块添加。这将解决您的问题。

答案 2 :(得分:1)

您可以从此处安装 Java Decompiler IntelliJ插件https://plugins.jetbrains.com/plugin/7100-java-decompiler-intellij-plugin

它允许您在调试过程中显示所有Java源代码,即使您没有全部