为什么它无法从JAR文件加载主类清单属性?

Rom*_*man 85 java jar header manifest

我以这种方式创建了一个JAR文件jar cf jar-file input-files.现在,我正试图运行它.运行它不起作用(找不到jre命令):

jre -cp app.jar MainClass
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

java -jar main.jar
Run Code Online (Sandbox Code Playgroud)

(无法从main.jar加载Main-Class清单属性).

我也发现了这一点

运行打包为JAR文件的应用程序(版本1.2 - 需要Main-Class清单标头)

什么是"Main-Class清单标题"?我该如何创建它以及在哪里放置它?

Jon*_*eet 62

我不确定我是否相信你的症状:

  • 如果jre未找到该命令,则运行jre -cp app.jar应该给出相同的错误
  • 只是将JAR文件添加到类路径中不应该给出您看到的错误

如果您运行,我希望您看到此错误:

java -jar app.jar
Run Code Online (Sandbox Code Playgroud)

Main-Class标头需要位于JAR文件的清单中 - 这是关于其他所需库的元数据.有关如何创建适当的清单,请参阅Sun文档.基本上你需要创建一个包含这样一行的文本文件:

Main-Class: MainClass
Run Code Online (Sandbox Code Playgroud)

然后跑

jar cfm app.jar manifest.txt *.class
Run Code Online (Sandbox Code Playgroud)


小智 35

  1. 设置类路径并编译

    javac -classpath"C:\ Program Files\Java\jdk1.6.0_ updateVersion\tools.jar"yourApp.java

  2. 创建manifest.txt

    Main-Class:yourApp 换行符

  3. 创建yourApp.jar

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. 运行yourApp.jar

    java -jar yourApp.jar

  • +1表示清单中的新行. (13认同)

Dai*_*ius 9

你可以运行:

java -cp .;app.jar package.MainClass
Run Code Online (Sandbox Code Playgroud)

如果JAR文件中没有清单,它对我有用.


Sri*_*bat 6

我收到了这个错误,这是因为我的参数输入顺序错误:

正确

java maui.main.Examples tagging -jar maui-1.0.jar 
Run Code Online (Sandbox Code Playgroud)

错误

java -jar maui-1.0.jar maui.main.Examples tagging 
Run Code Online (Sandbox Code Playgroud)