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

Maven项目Java21升级后Jar双击运行报ClassNotFoundException求助

Maven Java21项目Jar包启动问题排查与解决

核心问题分析

  • java .\vertragsmanager-1.0-SNAPSHOT.jar属于错误的命令语法:Java命令中,直接传入jar文件名会被当作主类全限定名去查找,而非启动jar包,因此必然抛出ClassNotFoundException。
  • 双击Jar报错大概率和系统默认Java版本不匹配、Jar包的MANIFEST配置异常有关。

解决方案

1. 修正Jar包启动命令

若不用java -jar,需通过类路径指定主类启动,命令格式为:

java -cp .\vertragsmanager-1.0-SNAPSHOT.jar 你的主类全限定名

例:如果GUIStarter在de.odosco包下,命令为:

java -cp .\vertragsmanager-1.0-SNAPSHOT.jar de.odosco.GUIStarter

2. 修复双击Jar的问题

检查系统默认Java版本

打开命令提示符执行:

java -version

确认输出为Java 21。若不是,需将Java 21设置为系统默认JRE:

  • 调整环境变量JAVA_HOME指向Java21安装目录
  • 将%JAVA_HOME%\bin移到系统PATH最前端

验证Jar包的MANIFEST配置

解压Jar包,打开META-INF/MANIFEST.MF,确认存在正确的Main-Class配置:

Main-Class: 主类全限定名

例:主类de.odosco.GUIStarter对应的配置应为Main-Class: de.odosco.GUIStarter,同时检查Jar包内是否存在对应路径的.class文件(如de/odosco/GUIStarter.class)。

调整Maven打包配置

确保pom.xml中maven-jar-plugin正确配置主类,添加或修改如下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 替换为你的主类全限定名 -->
                        <mainClass>de.odosco.GUIStarter</mainClass>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

若项目包含第三方依赖,需使用maven-shade-plugin将依赖打包进Jar(避免双击时缺失依赖类):

<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>de.odosco.GUIStarter</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

重新打包验证

执行Maven命令清理并重新打包:

mvn clean package

之后用java -jar确认Jar正常启动,再尝试双击运行。

3. 主类合法性检查

确保GUIStarter类满足:

  • 拥有public static void main(String[] args)方法
  • 类本身为public访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:07:45