我已经安装了一个应用程序,当我试图运行它(它是一个可执行的jar)什么都没有发生。当我从命令行运行它时:

Java -jar "app.jar"

我得到了以下信息:

在“app.jar”中没有主清单属性

通常,如果我自己创建了这个程序,我就会向清单文件添加一个主类属性。但在这种情况下,由于文件来自应用程序,我不能这样做。我还尝试提取jar,看看是否能找到主类,但有很多类,没有一个在它的名称中有“main”这个词。必须有一种方法来修复这个问题,因为程序在其他系统上运行良好。


当前回答

Gradle的答案是添加一个jar/manifest/attributes设置,像这样:

apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'com.package.app.Class'
    }
}

其他回答

在您的本地.m2目录中检查该工件的子目录。 如果存在-删除它,并再次执行Maven更新

如果jar不遵守规则,它就不是一个可执行的jar。

如果您正在使用命令行组装.jar,则可以在不添加清单文件的情况下指向主文件。例子:

jar cfve app.jar TheNameOfClassWithMainMethod *.class

(参数"e"是这样做的:TheNameOfClassWithMainMethod是一个类的名称,带有方法main()和app.jar -可执行文件的名称。jar和*.class -只是所有的类文件组装)

这应该是java -jar app.jar而不是java -jar "app"。

只有当JAR文件是可执行JAR文件时,-jar选项才有效,这意味着它必须有一个带有Main-Class属性的清单文件。参见在JAR文件中打包程序以了解如何创建可执行JAR。

如果它不是一个可执行的JAR,那么你需要像这样运行程序:

java -cp app.jar com.somepackage.SomeClass

其中com.somepackage.SomeClass是包含运行程序的主方法的类。(这个类是什么取决于程序,不可能从您提供的信息中判断出来)。

我也遇到过同样的问题,现在已经解决了:) 只要遵循以下步骤,错误可能是任何东西,但下面的步骤使过程更顺畅。我花了很多时间来寻找解决办法。

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版本相匹配。

希望这能有所帮助!如果您还有什么问题,请告诉我。