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

IntelliJ构建JAR后无法找到或加载主类问题求助

排查JAR运行找不到主类的可能原因

我来帮你梳理几个大概率导致这个问题的常见坑,都是IntelliJ打包JAR时容易忽略的细节:

  • 清单文件MANIFEST.MF的格式或内容错误
    虽然你说填了清单信息,但要再仔细核对:

    • Main-Class的全限定类名必须完全匹配,包括大小写(比如REFController不能写成RefController,包名continental也不能写错大小写);
    • 格式必须严格:Main-Class: com.continental.ref.REFController,冒号后面必须有一个空格,且这一行不能有多余的空格、换行或特殊字符;
    • 检查清单文件末尾是否有多余的空行?有些情况下,空行可能导致JVM解析清单出错。
  • 依赖提取导致的类路径冲突或覆盖
    你选择了“将JAR文件提取到目标JAR”,如果某个依赖JAR里恰好也存在com.continental.ref.REFController.class(哪怕是不同版本),就会出现类覆盖的情况,JVM加载到的可能不是你自己的主类。可以打开JAR文件全局搜索这个类,看看是否存在多个副本。

  • IntelliJ打包时的目录结构错误
    确认你的REFController.class是否在JAR根目录的正确包路径下:必须是com/continental/ref/REFController.class,而不是嵌套在classes/、lib/或者其他子目录里。如果类文件被放到了子目录,JVM会找不到对应的类路径。

  • 命令行运行的环境干扰

    • 试试换一种方式运行,直接指定主类和类路径:d:\Own_Tools\REF_Standalone\build>java -cp REF_Standalone.jar com.continental.ref.REFController,如果能正常运行,说明问题出在清单文件上;如果还是报错,那大概率是JAR内部的类结构有问题。
    • 检查是否设置了CLASSPATH环境变量,这个变量会干扰JVM的类加载顺序,导致优先加载外部类而不是你JAR里的类。可以临时清空CLASSPATH再试。
  • Java模块化项目的特殊情况
    如果你的项目用了Java模块(有module-info.java),那普通的Main-Class配置可能不够,需要在清单里添加Module-Main-Class,或者用模块化方式运行:java --module-path . -m 你的模块名/com.continental.ref.REFController。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:54:09