【发布时间】:2016-07-15 18:16:15
【问题描述】:
我已经搜索了 Google 和 StackOverflow 以寻求解决方案,但到目前为止没有找到任何解决方案。我正在尝试使用 Java 1.8 的 Windows 命令行中的清单文件生成一个简单的可执行 .jar 包。相关文件为:
Turtlephilia.java:
public class Turtlephilia {
public static void main(String[] args) {
System.out.println("i lurrrve turtles");
}
}
清单.mf:
Main-Class: Turtlephilia
do.bat:
javac Turtlephilia.java
jar cvmf manifest.mf Turtlephilia.jar Turtlephilia.class
java -jar Turtlephilia.jar
当我执行 do.bat 时,它编译并存档成功,但是在运行 jar 文件时,它会生成此错误:
no main manifest attribute, in Turtlephilia.jar
注意:我实际上可以使用此命令成功运行它:
java -cp Turtlephilia.jar Turtlephilia
但我需要它是一个可执行的 jar。
我做错了什么?有多难!?
【问题讨论】:
-
您是否碰巧使用记事本创建了 manifest.mf?我怀疑开头有一个不可见的byte-order mark (BOM) 字符,这意味着该行在技术上并不以
Main-Class开头。解决方法:在Main-Class上方添加一个空行。 -
我确实在记事本中进行了编辑,但添加空行后我遇到了同样的问题。顺便说一句,我注意到,如果我将 .jar 拖到 Netbeans 中并查看,那么在 META-INF\MANIFEST.ms 下的包中,它的默认清单具有 Manifest-Version: 1.0, Created-By: ... .,没有我的 Main-Class 线。它只是完全忽略了我的清单文件吗?
-
天哪。你走在正确的轨道上。 Main-Class 是清单文件中的最后一行,后面需要一个回车。
标签: java jar executable-jar manifest.mf