java清单类路径vs.-classpath

java清单类路径vs.-classpath,java,jar,classpath,Java,Jar,Classpath,我试图找出一个可执行jar文件的奇怪问题: xyz.jar在清单文件/中有一个类路径,并且依赖于abc.jar库 不幸的是,xyz.jar中的清单类路径不正确。为了避免灾难,我正在更新执行命令以使用:java-classpath/abc.jar:etc而不是java-jar 问题是,除非abc.jar不在类路径上,否则xyz.jar会发生错误。删除abc.jar后,程序将正确执行,不会引发异常。 为什么?xyz.jar必须从其他地方接收abc.jar。xyz.jar调用abc.jar中的方法 -

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

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

问题是,除非abc.jar不在类路径上,否则xyz.jar会发生错误。删除abc.jar后,程序将正确执行,不会引发异常。 为什么?xyz.jar必须从其他地方接收abc.jar。xyz.jar调用abc.jar中的方法


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

我认为jar清单文件的Class Path属性用于声明该jar中类的依赖关系,因此独立于主类路径。
虽然在java命令中使用-cp确实会替换ClassPath环境变量,但它不会影响每个jar的单个类路径。

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

不正确。如果使用-jar,则忽略所有其他类路径。