在JAVA中,如何确定导入的来源?

时间:2017-06-26 02:57:40

标签: java

我没有使用任何IDE并尝试修复tomcat中部署的war文件的某些错误。我试图寻找一个包的来源,错误的行似乎需要参数,并已从某些包中导入,如

import com.somefirm.somepackage.someClass;

以下问题没有回答我的问题:

In eclipse determine which jar file a class is from

How can I find files imported in a java class

我想知道有什么方法可以手动找到import的来源。甚至可能吗?一个类如何查找要导入的包?

编辑1:用换行符分隔链接。

编辑2:“目前我没有使用任何IDE”这个问题有点晚了。所以添加我没有使用IDE 到第一行。

编辑3:提供更清晰的问题,以及我为什么需要它。

编辑4:添加了这些编辑。感谢@ Jude-niroshan和@ErwinBolwidt

2 个答案:

答案 0 :(得分:3)

重点是:类的确切位置由类路径设置决定。

在某些时候定义了在分别编译应用程序时可以使用哪些类时可用的类。

因此,当您不使用ide时,您必须搜索应用于构建的类路径中的“元素”。例如,通过查看每个jar文件。

鉴于你的意见:我认为你必须退后一步。您似乎缺乏Java的基本知识。您必须了解构建WAR文件的如何。应该有一些类型的构建描述;包含依赖关系和WAR传递的其他内容。你必须分析那些。除此之外:如果这些软件包来自您的团队/公司/ ......一个简单的文件搜索可能会完成这项工作。如果这些软件包是“外部的”,比如开源库 - 那么你可以尝试使用简单的谷歌来获取类名;或转向grepcode.com。

您提出的另一件事是:已编译的类仅包含完全限定的类名。不再有类文件中的没有 import语句。因此,当一个类“需要”另一个类时,它会要求JVM加载该类(给定完全限定的名称)。 JVM只是查看类路径,并加载匹配给定名称的第一个类。

答案 1 :(得分:0)

您没有使用IDE。 Have a look at the importance of using an IDE?

如果您需要查看确切的源代码,您必须拥有该特定jar文件的项目。如果您只获得了像jar文件,war文件这样的编译Java解释,那么您必须使用Java Decompiler

反编译器不会为您提供该类作者编写的确切源代码,但它将绘制一个非常相似的源代码。请记住,反编译是逆向工程。这将帮助您识别错误的位置,因为JRE(Java运行时环境)正在使用编译的Java解释。

为了找到一个特定的类jar文件,you can search on the maven central repository希望它存在于最大的java存储库中。如果没有,祝你好运在互联网上找到它。 : - )