我已经安装了一个应用程序,当我试图运行它(它是一个可执行的jar)什么都没有发生。当我从命令行运行它时:
Java -jar "app.jar"
我得到了以下信息:
在“app.jar”中没有主清单属性
通常,如果我自己创建了这个程序,我就会向清单文件添加一个主类属性。但在这种情况下,由于文件来自应用程序,我不能这样做。我还尝试提取jar,看看是否能找到主类,但有很多类,没有一个在它的名称中有“main”这个词。必须有一种方法来修复这个问题,因为程序在其他系统上运行良好。
我已经安装了一个应用程序,当我试图运行它(它是一个可执行的jar)什么都没有发生。当我从命令行运行它时:
Java -jar "app.jar"
我得到了以下信息:
在“app.jar”中没有主清单属性
通常,如果我自己创建了这个程序,我就会向清单文件添加一个主类属性。但在这种情况下,由于文件来自应用程序,我不能这样做。我还尝试提取jar,看看是否能找到主类,但有很多类,没有一个在它的名称中有“main”这个词。必须有一种方法来修复这个问题,因为程序在其他系统上运行良好。
当前回答
我和你有相似的问题, 在下面的语法中成功创建。war文件:-
Jar {cvf} [Jar -file] [manifest-file]
清单 当创建(c)或更新(u) JAR文件时,manifest操作数用要包含在manifest中的属性的名称和值定义先前存在的清单文件。MF在JAR文件中。如果f选项'[1]'存在,则必须指定清单操作数。
为了创建清单文件,你需要为某些属性定义一个值,你可以在(.WAR)文件名后面加上星号,以避免创建清单文件:-
罐子 -cvf foo.war *
老实说,我不知道这是否是一个最好的做法,但它为我工作:)。
其他回答
我也遇到过同样的问题,现在已经解决了:) 只要遵循以下步骤,错误可能是任何东西,但下面的步骤使过程更顺畅。我花了很多时间来寻找解决办法。
1.尝试重新启动Eclipse(如果您正在使用Eclipse构建JAR文件) ——>实际上,这有助于我的问题,导出JAR文件正确。
2.eclipse重新启动后,尝试查看eclipse是否能够通过Java项目识别主类/方法——>右键单击——>运行为——>运行配置——> main——>单击搜索按钮,查看eclipse是否能够在JAR文件中查找主类。 这是为了验证JAR文件将拥有主类的入口点。
在此之后,将您的Java动态项目导出为“可运行的JAR”文件而不是JAR文件。 在Java启动配置中,选择您的主类。 导出jar文件后,使用下面的命令执行。 java -cp[你的JAR]. JAR[完整的包]。MainClass 例如:java -cp AppleTCRuleAudit.jar com.apple.tcruleaudit.classes.TCRuleAudit .jar 您可能会遇到不支持的java版本错误。修复方法是更改shell bash概要文件中的java_home,使之与用于在eclipse中编译项目的Java版本相匹配。
希望这能有所帮助!如果您还有什么问题,请告诉我。
(第一个帖子-所以可能不干净)
这是我对OS X 11.6的修复,基于maven的Netbeans 8.2程序。到目前为止,我的应用程序是100%的Netbeans -没有调整(只是一些shell逃脱为不可能!)。
在这里和其他地方尝试了几乎所有的答案都无济于事之后,我回到了“使用有用的东西”的艺术上。
上面的答案(olivier-refalo,谢谢)看起来是正确的起点,但并没有帮助。
看看其他成功的项目,我注意到清单行中有一些微小的差异:
addClasspath, classpathPrefix不存在(已删除) mainClass缺少了“com”。(使用NB ->项目 属性->运行->主类->浏览指定)
不知道为什么(我只有3个月的java)或如何,但只能说这是有效的。
下面是修改后的manifest块:
<manifest>
<mainClass>mypackage.MyClass</mainClass>
</manifest>
在您的本地.m2目录中检查该工件的子目录。 如果存在-删除它,并再次执行Maven更新
我和你有相似的问题, 在下面的语法中成功创建。war文件:-
Jar {cvf} [Jar -file] [manifest-file]
清单 当创建(c)或更新(u) JAR文件时,manifest操作数用要包含在manifest中的属性的名称和值定义先前存在的清单文件。MF在JAR文件中。如果f选项'[1]'存在,则必须指定清单操作数。
为了创建清单文件,你需要为某些属性定义一个值,你可以在(.WAR)文件名后面加上星号,以避免创建清单文件:-
罐子 -cvf foo.war *
老实说,我不知道这是否是一个最好的做法,但它为我工作:)。
如果使用Maven,请在pom中包含以下内容
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>