当您在运行Java应用程序时遇到“没有主清单属性”的错误,这通常意味着JAR文件的MANIFEST.MF文件中缺少Main-Class属性。MANIFEST.MF文件位于JAR文件的/META-INF目录下,它包含了JAR文件的元数据信息,其中Main-Class属性用于指定JAR文件的入口点,即包含main方法的类。
java -jar yourapp.jar
命令来运行应用程序,无需指定类名。确保MANIFEST.MF文件中有如下内容:
Main-Class: com.example.YourMainClass
确保MANIFEST.MF文件的每一行都以换行符结束,并且属性值前后没有多余的空格。
有时JAR文件可能未包含正确的/META-INF目录或MANIFEST.MF文件。
假设您有一个简单的Java应用程序,主类为com.example.Main
,以下是如何使用Maven配置构建:
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>example-app</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
通过上述配置,Maven会在打包时自动将Main-Class属性添加到MANIFEST.MF文件中,从而解决“没有主清单属性”的问题。
领取专属 10元无门槛券
手把手带您无忧上云