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

Maven打包JAR运行报错:找不到或无法加载主类,及NetBeans中Manifest文件位置咨询

问题排查与解决方案

我来帮你一步步解决遇到的JAR执行问题,同时告诉你NetBeans里Manifest文件的位置:

一、解决「Could not find or load main class」错误

1. 先确认主类路径完全正确

首先要核对你的主类com.mycompany.mavenproject3.SSBStub是不是真的存在:

  • 检查源码目录src/main/java下有没有对应的包结构:com/mycompany/mavenproject3,而且SSBStub.java文件里的包声明必须是package com.mycompany.mavenproject3;,同时类里一定要有public static void main(String[] args)方法——这是可执行JAR的核心入口。

2. 检查Maven打包出来的Manifest内容

你可以把生成的JAR文件(比如target/mavenproject3-1.0-SNAPSHOT.jar)解压,看看里面META-INF/MANIFEST.MF文件有没有正确的Main-Class条目:

Main-Class: com.mycompany.mavenproject3.SSBStub

如果这个条目丢了或者路径写错,肯定会报找不到主类的错误。

3. 解决依赖缺失的隐性问题

你的项目依赖了wiremock-standalone,但默认的maven-jar-plugin只会打包你自己写的代码,不会把依赖的第三方JAR包也塞进去。运行时如果找不到WireMock的类,也会间接导致主类加载失败(因为你的主类大概率依赖这些类)。

推荐改用maven-shade-plugin来打包一个包含所有依赖的「胖JAR」,把你的pom.xml里的build部分改成这样:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.mycompany.mavenproject3.SSBStub</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

改完之后重新执行mvn clean package,然后用target目录下带-shaded后缀的JAR文件运行试试。

4. 确保运行命令正确

最后检查一下你运行JAR的命令是不是对的:

# 用原插件打包的JAR(不包含依赖,可能还是会错)
java -jar target/mavenproject3-1.0-SNAPSHOT.jar

# 用shade插件打包的胖JAR
java -jar target/mavenproject3-1.0-SNAPSHOT-shaded.jar

二、NetBeans中查找Manifest文件的位置

Manifest文件分两种情况:

  • 编译前的自定义模板:如果你想自己写Manifest内容,可以在项目的src/main/resources/META-INF目录下创建MANIFEST.MF(如果目录不存在就手动建)。不过要注意,Maven的打包插件默认会覆盖这个文件,除非你在插件配置里指定使用自定义的Manifest。
  • 编译后的最终Manifest:打包完成后,JAR文件内部的META-INF/MANIFEST.MF,你可以直接在NetBeans里找到target目录下的JAR文件,双击展开,然后点开META-INF节点就能看到这个文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:12:07