我已经安装了一个应用程序,当我试图运行它(它是一个可执行的jar)什么都没有发生。当我从命令行运行它时:
Java -jar "app.jar"
我得到了以下信息:
在“app.jar”中没有主清单属性
通常,如果我自己创建了这个程序,我就会向清单文件添加一个主类属性。但在这种情况下,由于文件来自应用程序,我不能这样做。我还尝试提取jar,看看是否能找到主类,但有很多类,没有一个在它的名称中有“main”这个词。必须有一种方法来修复这个问题,因为程序在其他系统上运行良好。
我已经安装了一个应用程序,当我试图运行它(它是一个可执行的jar)什么都没有发生。当我从命令行运行它时:
Java -jar "app.jar"
我得到了以下信息:
在“app.jar”中没有主清单属性
通常,如果我自己创建了这个程序,我就会向清单文件添加一个主类属性。但在这种情况下,由于文件来自应用程序,我不能这样做。我还尝试提取jar,看看是否能找到主类,但有很多类,没有一个在它的名称中有“main”这个词。必须有一种方法来修复这个问题,因为程序在其他系统上运行良好。
当前回答
你可以简单地遵循这一步 创建一个jar文件
jar -cfm jarfile-name manifest-filename Class-file name
在运行jar文件时,像这样简单地运行
java -cp jarfile-name main-classname
其他回答
如果jar不遵守规则,它就不是一个可执行的jar。
我找到了一个新的解决方案,坏manifest生成!
用WinRAR这样的zip编辑器打开jar文件 点击META-INF 添加或编辑 添加: 创建一个名为MANIFEST的文本文件。MF在一个名为META-INF的文件夹中 并添加以下一行: Manifest-Version: 1.0 主类:package.ex.com.views.mainClassName 保存文件并将其添加到zip文件中 编辑: 拖出文件修改MANIFEST。MF添加前一行 打开cmd,输入:java -jar c:/path/JarName.jar
现在应该可以正常工作了!
大多数的解决方案对我来说都不奏效,但我的教练帮助了我 我想在这里分享他的解决方案 我使用kali Linux终端,但应该在所有debian都很好
javac *.java
nano MANIFEST.MF
在文件类型中
主类:主要 或者不管你的主文件名是什么(如果存在包名,请确保添加包名)
jar -cvmf MANIFEST.MF new.jar *.class
现在运行文件use
java -jar new.jar
或者你可以去文件的属性中检查
允许文件作为程序执行 双击它
这对我有帮助,而上面的大多数答案都没有
我刚才得到了同样的错误。 如果你正在使用gradle,只需在你的gradle.build中添加下一个:
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': 'com.company.project.MainClass'
}
}
其中com.company.project.MainClass使用公共静态void main(String[] args)方法的类的路径。
我试过了,对我很有效。 MVN清洁安装包应该工作。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>