【问题标题】:How should my MANIFEST.MF look?我的 MANIFEST.MF 应该是什么样子?
【发布时间】:2015-12-09 08:10:15
【问题描述】:

我有以下直接结构:

mp1
├── lib
│   └── kryonet-2.21-all.jar
├── mp1.iml
├── out
│   ├── artifacts
│   │   └── UX
│   │       ├── META-INF
│   │       │   └── MANIFEST.MF
│   │       └── UX.jar
├── src
│   ├── [.class files]
│   └── cs425
│       └── mp1
│           ├── agent
│           │   ├── [handlers].java
│           ├── common
│           │   ├── [commons].java
│           ├── main
│           │   └── UX.java
│           └── network
│               ├── [networks].java

我对 mainfest 文件完全陌生,我只是想让.jar 在远程机器上运行。我的清单现在看起来像这样:

清单版本:1.0

主类:cs425.mp1.main.UX

但我只是不断得到,

~/mp1$ java -jar UX.jar
Error: Invalid or corrupt jarfile UX.jar

有什么帮助吗?我不确定要为我的外部库添加哪些选项以及如何定义我的类路径。

【问题讨论】:

  • 清单末尾是否有空换行符?我不知道在较新的 Java 版本中这是否仍然是一个问题,但较旧的版本需要一个空行。
  • 是的,有 - 我一开始在我的 IDE 中遇到了一个错误
  • 什么意思,src 包含[.class files].class 文件应该在 .java 文件旁边(不推荐),或者在不同文件夹下的类似目录结构中,例如binout。 --- 我也希望其他.java 文件的名称中没有真正使用[括号]。
  • 如果类文件都在src文件夹中,那么你忘了在每个.java文件的开头指定package语句。

标签: java jar manifest executable-jar


【解决方案1】:

似乎我唯一缺少的是外部.jar 文件的类路径。我的清单现在看起来像:

Manifest-Version: 1.0
Main-Class: cs425.mp1.main.UX
Class-Path: kryonet-2.21-all.jar

在确保我所有需要的文件都是工件包的一部分(我的清单文件、外部 jar 等)之后,问题似乎已经消失了。

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多