Java &引用;错误:无法找到或加载主类com.mycompany.App“;尝试执行Maven生成的Jar时

Java &引用;错误:无法找到或加载主类com.mycompany.App“;尝试执行Maven生成的Jar时,java,maven,jar,main,mainclass,Java,Maven,Jar,Main,Mainclass,我正试图在Windows7上构建一个maven java程序,我的java版本是1.7。我得到了这个错误: “错误:尝试执行Maven生成的Jar时无法找到或加载主类com.mycompany.App” 尽管Jar中存在com/mycompany/App.class,并且它有一个main方法。下面是我的META-INF/MANIFEST.MF的样子: Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apach

我正试图在Windows7上构建一个maven java程序,我的java版本是1.7。我得到了这个错误:

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

尽管Jar中存在
com/mycompany/App.class
,并且它有一个main方法。下面是我的
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
我的清单文件末尾有一个空行。我正在使用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>

org.apache.maven.plugins
maven jar插件
真的
存储库
${settings.localRepository}
com.mycompany.App
有人能帮我了解导致此错误的原因吗?

  • 假设您已检查这些文件是否存在:
./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>
    ...
org.apache.maven.plugins
maven jar插件
2.4
...

如果从清单中删除除main类之外的所有内容,那么它应该可以工作。 如果您试图创建一个包含所有类路径的可执行jar文件 依赖项,您可能希望使用汇编插件或着色插件
而不是jar插件。

您可以发布完整的异常吗?标题中引号中的错误实际上是完整的异常。您需要将依赖项打包为jar,并将其包含在生成的jar中。例如:1。我查过了,它们都存在。2.是的,jar在适当的目录结构3中包含App.class。我确实尝试过使用verbose类,但它只显示了正在加载的Java类。4.您对版本的看法是正确的,我已将其添加到中。使用此设置,这对我来说效果很好: