You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven Jar插件主类路径配置求助:可执行Jar启动报错

解决Maven构建Akka项目可执行Jar时找不到主类的问题

我来帮你搞定这个头疼的问题!当同时配置Maven Jar插件和Shade插件时,很容易因为主类路径写错、配置冲突或者插件配合不当导致Could not find or load main class报错,咱们一步步来调整:

1. 先确认主类的全限定名是否正确

这是最容易踩的坑!你的主类全限定名必须完全匹配,比如你的主类在包com.akka.demo下,类名叫AkkaApplication,那全限定名就是com.akka.demo.AkkaApplication——注意大小写(Java类名大小写敏感)、包名拼写,一个字母错了都不行。

2. 正确配置Maven Jar插件

Jar插件负责生成标准Jar包,要在archive的manifest里明确指定主类,配置示例如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.3.0</version> <!-- 建议使用最新稳定版 -->
    <configuration>
        <archive>
            <manifest>
                <!-- 替换成你的主类全限定名 -->
                <mainClass>com.akka.demo.AkkaApplication</mainClass>
                <!-- 可选:自动添加依赖到Class-Path,方便运行非胖包时找到依赖 -->
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
</plugin>

3. 同步配置Maven Shade插件(关键!)

因为你要生成包含所有依赖的可执行胖包,Shade插件的配置必须和Jar插件保持一致,还要处理Akka特有的配置文件冲突:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version> <!-- 最新稳定版 -->
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <!-- 这里的主类必须和Jar插件的完全一致 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.akka.demo.AkkaApplication</mainClass>
                    </transformer>
                    <!-- Akka项目必备:合并所有依赖的reference.conf,避免配置覆盖 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>reference.conf</resource>
                    </transformer>
                </transformers>
                <!-- 可选:给胖包加后缀,区分普通Jar和胖包 -->
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>shaded</shadedClassifierName>
            </configuration>
        </execution>
    </executions>
</plugin>

4. 正确运行生成的Jar包

执行mvn clean install后,你会在target目录下看到两个Jar:

  • 普通Jar:比如your-project-1.0-SNAPSHOT.jar——这个Jar不包含依赖,运行时需要手动指定类路径,不建议直接用java -jar运行
  • 胖包Jar:比如your-project-1.0-SNAPSHOT-shaded.jar——这是包含所有依赖和正确主类配置的可执行包,运行命令应该是:
java -jar target/your-project-1.0-SNAPSHOT-shaded.jar

5. 排查验证技巧

如果还是报错,你可以解压Jar包,查看META-INF/MANIFEST.MF文件:

  • 确认里面有Main-Class: com.akka.demo.AkkaApplication这一行,如果没有,说明插件配置没生效,检查pom.xml的插件是否在<build><plugins>标签内
  • 检查Jar包内是否存在对应的类文件:比如com/akka/demo/AkkaApplication.class,如果不存在,说明编译时主类没有被正确打包

内容的提问来源于stack exchange,提问作者Roma Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:35:00