2012-04-19 68 views
2

我试图找出一个奇怪的问题,我有一个可执行的jar文件: xyz.jar在清单文件中有一个类路径/并依赖于abc.jar库。java清单类路径与-classpath

不幸的是,xyz.jar中的清单类路径不正确。为了避免灾难,我正在更新执行命令以使用:java -classpath path/abc.jar:etc而不是java -jar

问题是xyz.jar出现故障,除非abc.jar不在类路径。当abc.jar被删除时,程序正确执行,并且不会引发异常。 为什么? xyz.jar必须从别处获取abc.jar。 xyz.jar在abc.jar中调用方法。

-classpath应覆盖任何$ CLASSPATH设置。即使使用-classpath,java是否仍然可以查看清单类路径?

回答

6

如果指定-jar,则只使用清单中的类路径。所有其他人都被忽略。如果您需要重新指定类路径,请不要使用-jar。

-1

我相信jar清单文件的Class-Path属性用于声明该jar中的类的依赖关系,因此独立于主类路径。 尽管将java命令与-cp一起替换ClassPath环境变量是确实存在的,但它不应该影响每个jar的各个Class-Path。

+0

不正确。如果使用-jar,则所有其他类路径都将被忽略。 – EJP 2012-04-19 22:34:51