+-
/usr/share / java中的JAR依赖关系解析
有人可以解释一下JAR文件和 Java类加载器如何使用/usr/share / java吗?这是JVM将在其中执行自动JAR加载和类查找的一个特殊目录吗?

例如,如果我有依赖y.jar的x.jar.如果两个jar都在/usr/share / java中,则在加载x.jar时会找到依赖项y.jar.但是,当从任何其他目录加载x.jar时,我必须明确地将y.jar放在类路径中,即使它仍与x.jar放在同一目录中也是如此.为什么是这样?

有什么办法可以使其他目录表现得像/usr/share / java一样?

最佳答案
根据您的发行版,/usr/share / java可能位于系统属性java.ext.dirs中指定的目录中.文章 Extension Mechanism Architecture更详细地解释了.如 Installed Extensions中所述,此类扩展的位置取决于平台和版本.

附录:您可以使用以下代码行检查平台上的属性:

System.out.println(System.getProperty("java.ext.dirs"));

附录:仔细观察,/usr/share / java不会出现在任何系统属性中;该效果可能是由于相关JAR清单的Class-Path属性引起的.使用此方便的utility,可以检查它们.

/usr/share/java/ant-bootstrap.jar 
Class-Path: ant.jar xml-apis.jar xercesImpl.jar xalan.jar

/usr/share/java/openoffice/java_uno.jar 
Class-Path: jurt.jar ridl.jar ../../lib/ ../bin/

/usr/share/java/openoffice/juh.jar 
Class-Path: ridl.jar jurt.jar ../../lib/ ../bin/

/usr/share/java/openoffice/jurt.jar 
Class-Path: ridl.jar unoloader.jar ../../lib/ ../bin/
点击查看更多相关文章

转载注明原文:/usr/share / java中的JAR依赖关系解析 - 乐贴网