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

IntelliJ打包Jar提示主类找不到/无法加载的问题排查

解决Java项目Jar打包与运行的三类常见问题

我来帮你一步步捋清楚你遇到的这几个Jar打包和运行的坑,都是Java开发者常踩的点,咱们逐个解决:

一、IntelliJ打包后提示「无法找到或加载主类view.BookWindow」

这个问题大概率是MANIFEST.MF的配置或Jar目录结构出了问题,你可以按以下步骤排查:

  • 检查主类全限定名:确认MANIFEST.MF里的Main-Class字段是view.BookWindow(Java类名区分大小写,别写错)
  • 不要手动指定MANIFEST路径:你之前把MANIFEST.MF放到src/main/resources是没必要的,让IntelliJ在打包向导里自动生成即可——手动放置的文件可能没有被正确合并到Jar根目录的META-INF下
  • 验证Jar内的目录结构:反编译Jar后,确保view/BookWindow.class确实存在,且路径是Jar根目录直接下的view文件夹,不是嵌套在其他目录(比如classes/view/)
  • 重新走IntelliJ打包流程:在「从带依赖的模块创建Jar」向导里,一定要精准选择view.BookWindow作为主类,别选错其他类

二、移动文件后Maven编译报错:找不到org.apache.commons.codec.binary.Base64

这个是依赖缺失的问题,移动文件后Maven的依赖映射可能出了问题,解决方法很直接:

  • 在pom.xml中添加commons-codec依赖:把这段代码加到你的依赖列表里:
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version> <!-- 用最新稳定版即可,也可以用你项目需要的版本 -->
</dependency>
  • 清理Maven缓存并重新编译:先执行mvn clean清除旧的编译文件,再运行mvn install,避免缓存导致的依赖未加载问题
  • 刷新IntelliJ的Maven依赖:点击右侧Maven面板的「刷新」按钮,确保IntelliJ已经同步了pom.xml的依赖变更

三、Maven打包的Jar运行时找不到Flamingo类(已存在于lib目录)

默认的Maven打包只会生成你的项目代码Jar,不会自动处理依赖类的加载,即使你把依赖Jar放到lib目录、配置了MANIFEST.MF,也容易因为Class-Path配置不全出问题,推荐用Maven插件来解决:

方案1:用maven-assembly-plugin生成带所有依赖的可执行Jar

这个插件会把你的代码和所有依赖的类打包到一个Jar里,或者生成带lib目录的结构并自动配置Class-Path,配置如下:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <!-- 选择生成带依赖的Jar -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!-- 指定主类 -->
                <archive>
                    <manifest>
                        <mainClass>view.BookWindow</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置好后执行mvn clean package,会生成一个带-jar-with-dependencies后缀的Jar,直接运行java -jar 这个Jar文件名.jar就不会缺依赖了。

方案2:用maven-shade-plugin合并所有类到一个Jar

如果你不想带lib目录,这个插件会把所有依赖的类合并到你的项目Jar里,配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.5.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>view.BookWindow</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

执行mvn clean package后,生成的Jar就是包含所有依赖的可执行Jar,直接运行即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:55:42