我知道这是一个非常常见的问题,但我尝试使用谷歌搜索并没有得到任何有用的结果。 我正在尝试用我的“Main.class”文件制作一个jar(用NetBeans制作,但我不想用它制作jar)
我跑了这个命令:
D:\NetBeans\trovanum3\build\classes\trovanum3>jar cf trovanum.jar *.class
在该文件夹中生成了一个.jar文件。我认为那会有效,但它不会运行。
我尝试用存档开启器打开jar文件,里面是“Main.class”文件和包含名为“MANIFEST.MF”的文件的“META-INF”文件夹 该文件包含:
Manifest-Version: 1.0
Created-By: 1.6.0_22 (Sun Microsystems Inc.)
可能是什么问题?
答案 0 :(得分:3)
您需要在清单文件中指定Main-Class属性:Understanding the Manifest。这通常意味着您需要自己添加清单文件,而不是让它自动添加。
顺便说一下,你总是可以在没有这样的清单的情况下运行你的代码:
java -cp path/to/myJar.jar my.package.MyClass
当你想像这样运行它时需要清单:
java -jar path/to/myJar.jar
答案 1 :(得分:2)
创建一个名为well的文件,真的,但我们称之为manifest.txt
打开manifest.txt并输入:
Main-Class: Main
然后创建你的jar,输入
jar cfm trovanum.jar manifest.txt *.class
它应该运行良好。
答案 2 :(得分:1)
提取mainifest文件。
添加一行,如下所示:
Manifest-Version: 1.0
Created-By: 1.6.0_22 (Sun Microsystems Inc.)
Main-Class: Main
确保最后有两个换行符。
更新jar文件。您可以使用WinRAR,7-zip等编辑jar文件中的Manifest,或者您可以删除原始jar(在解压缩和编辑之后)然后运行
jar -cmf MANIFEST.MF trovanum.jar *.class
然后它会在jar中使用你新修改的清单。
答案 3 :(得分:1)
您可以使用jar的-e
选项指定入口点,即主要类。例如:
D:\NetBeans\trovanum3\build\classes> jar cfe trovanum.jar trovanum3.Main trovanum3\*.class
如果那就是你需要的全部内容,那么就可以省去清单。请注意,您的问题中引用的工作目录一个。否则,Main类是在jar的顶层创建的,而不是在反映它应该驻留的包的目录中创建的。 jar -tvf
应该显示如下内容:
0 Thu Oct 21 22:34:30 BST 2010 META-INF/
80 Thu Oct 21 22:34:30 BST 2010 META-INF/MANIFEST.MF
488 Thu Oct 21 22:18:24 BST 2010 trovanum3/Main.class
-e
将入口点设置为应用程序 独立的切入点 应用程序捆绑到可执行文件 jar文件。使用此选项 创建或覆盖Main-Class 清单文件中的属性值。 此选项可在使用期间使用 创建jar文件或更新时 jar文件。此选项指定 应用程序入口点没有 编辑或创建清单文件。
答案 4 :(得分:1)
创建可执行jar(而不是普通的jar文件)。您在导出jar文件时在eclipse中获得此选项。我遇到了同样的问题,一旦我创建了可执行jar就解决了。
创建批处理文件: java -jar“abc.jar”..
答案 5 :(得分:0)
您需要在jar的清单中设置Main-Class属性。有关详细信息,请参阅下面的java教程链接。
http://download.oracle.com/javase/tutorial/deployment/jar/appman.html