我正在尝试在Windows7上构建一个maven java程序,我的java -version是1.7 . 我收到这个错误:
“错误:在尝试执行Maven生成的Jar时无法找到或加载主类com.mycompany.App”
即使Jar内存在 com/mycompany/App.class
,它也有一个主方法 . 这是我的 META-INF/MANIFEST.MF
的样子:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: me
Build-Jdk: 1.7.0_03
Main-Class: com.mycompany.App
Class-Path: C:/Users/me/.m2/repository/com/mycompany/commons/2.1-SNAPSHOT/commons-2.1-SNAPSHOT.jar
我正在尝试使用以下方法执行jar:
java -jar mycompany-2.1-SNAPSHOT.jar 12:141678 1
我的Manifest文件末尾有一个空行 . 我正在使用Maven 3.0.5并使用mvn包生成jar文件 . 这是我的pom.xml的一部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathLayoutType>repository</classpathLayoutType>
<classpathPrefix>${settings.localRepository}</classpathPrefix>
<mainClass>com.mycompany.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
有人可以帮我理解导致此错误的原因吗?
2 回答
如果从除了mainClass之外的清单中删除所有内容,它应该可以工作 . 如果您尝试创建包含所有类路径依赖项的可执行jar文件,您可能希望使用程序集插件或shade插件而不是jar插件 .
com/mycompany/App.class
?jar -tf mycompany-2.1-SNAPSHOT.jar
-verbose:class
运行java可以显示如何解析类路径以加载(或不加载)每个类 .注意
您可能在构建时发出警告,因为没有为插件指定版本: