【问题标题】:java manifest classpath vs. -classpathjava manifest classpath vs. -classpath
【发布时间】:2012-04-19 17:28:58
【问题描述】:

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

很遗憾,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 是否仍会查看清单类路径?

【问题讨论】:

    标签: java jar classpath


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不正确。如果您使用 -jar,则所有其他类路径都将被忽略。
      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2023-03-14
      • 2011-12-07
      • 2017-12-03
      • 2011-05-24
      相关资源
      最近更新 更多