如何解决 Eclipse 导出可运行 JAR 后“找不到或无法加载主类”错误

心靈之曲

心靈之曲

2026-07-24

797人浏览

原创

如何解决 Eclipse 导出可运行 JAR 后“找不到或无法加载主类”错误

Eclipse 导出的 JAR 在命令行运行时提示“Error: Can't find or load main class”,通常因 JDK 版本不兼容或 MANIFEST.MF 配置异常导致;本文详解定位原因、修复 MANIFEST 文件及关键的 JDK 版本适配方案。

eclipse 导出的 jar 在命令行运行时提示“error: can't find or load main class”,通常因 jdk 版本不兼容或 manifest.mf 配置异常导致;本文详解定位原因、修复 manifest 文件及关键的 jdk 版本适配方案。

在 Eclipse 中开发并调试正常的 Java 程序,导出为 Runnable JAR 后却无法通过 java -jar test.jar 正常启动,控制台仅闪退或报错 Error: Can't find or load main class test.jar——这并非代码问题,而是JAR 执行环境与构建配置不匹配所致。核心矛盾往往隐藏在两个层面:JDK 运行时版本MANIFEST.MF 的主类声明机制

? 问题根源分析

你提供的 MANIFEST 对比已揭示关键线索:

  • 桌面导出(失败) 使用了 Eclipse 内置的 JarRsrcLoader(用于打包依赖的“fat jar”机制):

    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
    Rsrc-Main-Class: main.Main

    此方式依赖 Eclipse 自定义类加载器,要求运行时 JDK 必须兼容该加载器的字节码版本。若 JDK 版本过低(如 JDK 8/11),可能无法解析或初始化 JarRsrcLoader,导致 JVM 根本无法识别入口,进而误报“找不到主类”(实际是加载器启动失败)。

  • 笔记本导出(成功) 是标准 JAR 结构:

    Main-Class: Main

    直接指定主类,对 JDK 版本要求更宽松。

    Eclipse IDE
    Eclipse IDE

    Eclipse IDE 是一款由 Eclipse 基金会管理的开源、跨平台集成开发环境。其核心基于 Java 构建,通过强大的插件架构可扩展支持 C/C++、Python、PHP 等多种编程语言。它提供丰富的代码编辑、调试和重构工具,并紧密集成 Git、Maven 等现代开发工具链,是全球众多开发者首选的 Java 开发利器。

    下载

⚠️ 注意:java -Xdiag test.jar 命令本身有误——-Xdiag 是 JVM 诊断选项,不能直接跟 JAR 文件名;正确用法应为 java -Xdiag -jar test.jar,否则 JVM 会将 test.jar 当作主类名解析,从而触发“Can't find or load main class test.jar”的误导性错误。

✅ 正确解决方案:统一 JDK 版本 + 规范导出配置

1. 升级并统一使用 JDK 17(推荐)

正如你最终发现的,JDK 17 是关键突破口。Eclipse 2022-06 及更高版本默认生成的 JarRsrcLoader 字节码目标版本为 Java 17(或更高),若系统 PATH 中默认 JDK 是 8 或 11,则必然失败。请执行:

# 检查当前 java 版本
java -version

# 若非 JDK 17+,请下载并安装 OpenJDK 17(如 Adoptium Temurin 17)
# 然后配置系统环境变量 JAVA_HOME 指向 JDK 17,并更新 PATH

验证生效:

java -version  # 应输出 openjdk version "17.x.x"
java -jar test.jar  # 此时应正常启动

2. Eclipse 导出时选择合适打包方式(备选)

若需兼容旧 JDK,避免 JarRsrcLoader:

  • 导出时选择 "Extract required libraries into generated JAR"(而非 "Package required libraries into generated JAR");
  • 此模式生成标准 JAR,MANIFEST 中 Main-Class 直接指向你的主类(如 main.Main),无需自定义加载器;
  • 同时确保项目 Build Path → Libraries 中所有依赖已正确添加且无冲突。

3. 手动验证与修复 MANIFEST(进阶)

若仍需调试 MANIFEST:

  • 用 jar -tf test.jar | findstr "MANIFEST" 查看清单路径(通常是 META-INF/MANIFEST.MF);
  • 解压 JAR(重命名为 .zip)→ 编辑 META-INF/MANIFEST.MF → 确保:
    • Main-Class: 后为完整限定名(如 main.Main,不含 .class 或包路径错误);
    • 行尾必须有空行;
    • 无 UTF-8 BOM 或中文字符;
  • 重新打包:jar -cmf META-INF/MANIFEST.MF test_fixed.jar *

? 总结与最佳实践

  • 首要检查 JDK 版本一致性:Eclipse 编译级别、导出时使用的 JRE、命令行运行时 java 必须同为 JDK 17(或至少 ≥ 构建所用版本);
  • ✅ 使用 java -jar test.jar 而非 java test.jar —— 后者会尝试把 JAR 名当类名加载;
  • ✅ 导出前在 Eclipse 中右键项目 → Properties → Java Build Path → Libraries,确认 JRE System Library 已设为 JDK 17;
  • ❌ 避免手动修改 JarRsrcLoader 相关字段——除非你完全理解其工作机制,否则易引入新问题。

升级 JDK 17 不仅解决了该报错,也为后续使用现代 Java 特性(如密封类、模式匹配)奠定基础。开发环境的一致性,永远是可重复构建的第一道防线。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

eclipse

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

345

5

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

2023.07.24

2149

6

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

2023.11.02

2312

18

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

492

5

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

519

5

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

2025.10.10

1072

11

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

2025.10.10

1264

12

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.15

202

3

eclipse字体相关教程
eclipse字体相关教程

本专题整合了eclipse字体设置相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.26

291

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Eclipse 教程
Eclipse 教程

共35课时 | 46.3万人学习