首页 文章

“错误:在尝试执行Maven生成的Jar时无法找到或加载主类com.mycompany.App”

提问于
浏览
3

我正在尝试在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 回答

  • 1

    如果从除了mainClass之外的清单中删除所有内容,它应该可以工作 . 如果您尝试创建包含所有类路径依赖项的可执行jar文件,您可能希望使用程序集插件或shade插件而不是jar插件 .

  • 0
    • 假设您已经检查过这些文件是否存在:

    ./mycompany-2.1-SNAPSHOT.jar C:/Users/me/.m2/repository/com/mycompany/commons/2.1-SNAPSHOT/commons-2.1-SNAPSHOT.jar

    • 工件是否包含 com/mycompany/App.class

    jar -tf mycompany-2.1-SNAPSHOT.jar

    • 使用选项 -verbose:class 运行java可以显示如何解析类路径以加载(或不加载)每个类 .

    注意

    您可能在构建时发出警告,因为没有为插件指定版本:

    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        ...
    

相关问题