Java - 如何找出导入来自哪个Jar文件?

时间:2010-08-31 13:51:41

标签: java netbeans jar

我正在开发的项目有大约10个jar文件作为库。在其中一个文件的顶部有一个导入语句,如:

import jpe.nar.crat.maker.ObjectMakerFactory;

有没有办法告诉它来自哪个Jar文件?

(如果重要的话,我正在使用Netbeans。)

8 个答案:

答案 0 :(得分:14)

您可以使用CodeSource#getLocation()CodeSource可以ProtectionDomain#getCodeSource()使用ProtectionDomainClass#getProtectionDomain()依次由{{3}}提供。

URL location = ObjectMakerFactory.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println(location.getPath());
// ...

答案 1 :(得分:4)

你有没有尝试在课堂上做“公开声明”?在Eclipse中,当你这样做时,它会打开一个窗口,显示jar的名称并告诉你这个jar有'No Source Attachment'。我希望NetBeans能够发生类似的事情。

谢谢, [R

答案 2 :(得分:2)

您可以将Jar Class Search用于netbeans。我不确定它是否仍然兼容,但值得一试。

答案 3 :(得分:2)

我非常喜欢 JFind

http://jfind.sourceforge.net/

...它通过查看jar,内部战争,内耳等来递归地工作......

如果将java启动程序包装在shell脚本中并将其放在PATH上,它将成为一个非常强大的工具:

即。查找目录EntityManager中的所有jboss-6.0.0.20100429-M3类:

$ jfind.sh EntityManager ./jboss-6.0.0.20100429-M3
Search String: EntityManager
Windows Search Location: jboss-6.0.0.20100429-M3

....jjj.jjjjjjjjjjj
ClassName = javax/persistence/EntityManager.class
JarName = jboss-6.0.0.20100429-M3\client\hibernate-jpa-2.0-api.jar
----------------


jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
ClassName = org/apache/xerces/impl/XMLEntityManager.class
JarName = jboss-6.0.0.20100429-M3\client\xercesImpl.jar
----------------

用于Cygwin的小shell包装器:

if [ $# -ne 2 ]
then
  echo "Usage: `basename $0` <classname> [<fromDir>]"
  exit 1
fi

echo Search String: $1
SEARCH_LOCATION=`cygpath -w $2`
echo Windows Search Location: $SEARCH_LOCATION

java -jar `cygpath -w $HOME/bin/JFind.jar` "$1" "$SEARCH_LOCATION"
echo

答案 4 :(得分:1)

以编程方式还是以交互方式?

您可以尝试DocJar。在Eclipse控件中单击该项将显示(编辑面板将显示源(如果已连接)或Package Explorer将打开树到类时可用的方法),如果Netbeans没有表现出类似的话,我会感到惊讶庄园。

答案 5 :(得分:1)

在Netbeans IDE中: 在您的代码中,按住Ctrl键选择类名。在编辑器中出现相关的java文件之后(如果你没有该类的源代码,它可能不会显示太多)。右键单击源窗口中的任意位置,然后选择“在项目中选择”。该课程将在罐子中突出显示它来自哪里。

这至少可以追溯到Netbeans 8.0。

答案 6 :(得分:0)

我的一位前同事汤姆写了JarSniffer(http://sourceforge.net/projects/jarsniffer/)。这是一个方便的小工具,可以在一组罐子,拉链和目录树中找到一个类。

答案 7 :(得分:0)

在 Eclipse 中只需按 Ctrl-单击类名(在导入语句中),然后右键单击 .class 代码,打开一个对话框,·最后选择声明-项目。

enter image description here