【问题标题】:Manifest file generated inside meta-inf is missing classpath reference在 meta-inf 中生成的清单文件缺少类路径引用
【发布时间】:2020-03-27 10:39:36
【问题描述】:

我正在尝试使用 eclipse 导出 jar 功能为 eclipse 项目生成 jar 文件。我在清单文件中绝对引用了一个库

Manifest-Version: 1.0
Sealed: true
Main-Class: org.ad.TestMain
Class-Path: D:/demojar/commons-lang3-3.8.1.jar

我还尝试了 Class-Path: file:///D:/demojar/commons-lang3-3.8.1.jar 和相对路径,如 lib/commons-lang3-3.8.1.jar

这里显示了我的项目结构

我引用清单文件如下所示导出 jar

当我解压缩我的 jar 时,在 meta-inf 文件夹下生成的清单文件不包含类路径引用。代码抱怨库不存在。我该如何解决这个问题?

我的主要问题是为什么在 meta-inf 下的清单文件中生成的类路径不显示引用的类路径?

【问题讨论】:

  • 检查文本行是否以 LF 或 CRLF 结尾——在 Eclipse 编辑器中,打开 Windows / Preferences General / Editors / TextEditors “显示空白字符”,您应该会看到 ¤¶
  • @dave_thompson_085 它解决了我的问题,您可以将其发布为答案,以便我将其标记为正确答案

标签: java eclipse jar


【解决方案1】:

从类路径中删除 D: 并使路径相对于您的主 jar 所在的位置

即)

folder/
folder/YourJar.jar
folder/lib/commons-lang3-3.8.1.jar

清单应该是

Main-Class: org.ad.TestMain
Class-Path: lib/commons-lang3-3.8.1.jar

【讨论】:

  • 我也试过了,但主要问题是为什么 meta-inf 下的 manifest 没有显示类路径。
  • 确保您的库实际上位于清单指定的位置
  • 下拉引用的库,它很可能不在您认为的位置,它也必须与您的主 jar 文件相关
  • 在 java 项目中,我对库进行绝对引用(添加外部 jar),对于 jar,我给出绝对路径(lib 不在 jar 中),以便它可以基于类路径引用。如果我将它放在 lib 文件夹中并构建了 jar,我很确定它会起作用。
  • 然后这样做:)
猜你喜欢
  • 2018-01-17
  • 2012-08-21
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2014-07-13
相关资源
最近更新 更多