讲师中心 微信公众号
AI工具推荐 视频效率加速

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

云杰姑娘_7575

云杰姑娘_7575

发布时间:2026-07-24 13:16:06

|

528人浏览过

|

来源于php中文网

原创

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

Eclipse 导出的 JAR 在命令行运行时报错“Error: Can't find or load main class”,通常源于 JDK 版本不兼容、MANIFEST.MF 配置错误或类路径解析异常,本文提供完整排查与解决方案。

eclipse 导出的 jar 在命令行运行时报错“error: can't find or load main class”,通常源于 jdk 版本不兼容、manifest.mf 配置错误或类路径解析异常,本文提供完整排查与解决方案。

当你在 Eclipse 中成功运行 Java 程序,但导出为可运行 JAR 后执行 java -jar test.jar 时窗口闪退,并报错 “Error: Can't find or load main class test.jar”(注意:该错误实际表示 JVM 尝试将 test.jar 当作类名而非 JAR 文件——说明 -jar 参数未被正确识别,根源往往是 JDK 版本或环境配置问题),这并非 MANIFEST 文件本身语法错误,而是底层运行时兼容性问题。

? 根本原因分析

你对比了桌面(失败)与笔记本(成功)导出的 MANIFEST.MF,发现前者使用了 Eclipse 自带的 JarRsrcLoader(用于打包依赖的嵌套 JAR 加载器),而后者直接指定 Main-Class: Main。但即使手动修正 MANIFEST,问题依旧——这说明问题不在 manifest 表层配置,而在 JVM 层:

  • Eclipse 导出向导在不同 JDK 版本下生成的启动机制存在差异;
  • JDK 17+ 对 jarinjarloader 的反射/模块化限制增强,导致 JarRsrcLoader 在较新 JDK 上无法正常初始化 Rsrc-Main-Class;
  • 你的桌面环境可能默认使用了 JDK 17 或更高版本(如 JDK 21),而笔记本仍为 JDK 8/11,造成行为不一致。

✅ 正确解决方案:统一并升级 JDK 环境

你已通过 安装并切换至 JDK 17 解决问题——这正是关键所在。但需明确操作步骤以确保稳定:

  1. 确认当前 JDK 版本

    java -version
    javac -version

    若显示 < 17 或非标准版本(如 OpenJ9、Zulu 无长期支持版),建议统一使用 Oracle JDK 17 LTS 或 Eclipse Temurin 17。

    Eclipse IDE
    Eclipse IDE

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

    下载
  2. 在 Eclipse 中绑定 JDK 17

    • Window → Preferences → Java → Installed JREs → Add → Standard VM → 指向 JDK 17 安装路径
    • Project → Properties → Java Build Path → Libraries → 移除旧 JRE,添加 JDK 17
    • Project → Properties → Java Compiler → 设置 Compiler compliance level 为 17
  3. 重新导出 Runnable JAR(推荐配置)

    • 右键项目 → Export → Java → Runnable JAR file
    • Launch configuration: 选择正确的 Main 类启动项
    • Export destination: 指定路径
    • Library handling:
      ✅ 选 Extract required libraries into generated JAR(最兼容,避免 JarRsrcLoader)
      ❌ 避免 Package required libraries into generated JAR(触发 JarRsrcLoader,易在 JDK 17+ 失败)
  4. 验证导出结果
    正确导出后,MANIFEST.MF 应类似:

    Manifest-Version: 1.0
    Main-Class: main.Main
    Class-Path: .

    且 JAR 内部包含所有依赖 class(扁平化结构),不再依赖 org.eclipse.jdt.internal.jarinjarloader.*。

⚠️ 注意事项

  • 不要手动编辑 MANIFEST.MF 后直接替换 JAR 中文件——ZIP 结构需保持校验和一致,建议始终通过 Eclipse 重新导出;
  • 若必须使用“打包依赖”模式(如保留原始 JAR 结构),请确保目标运行环境 JDK ≥17 且启用 --add-opens(不推荐,复杂度高);
  • 命令行运行时务必使用 java -jar your-app.jar,切勿写成 java -jar your-app.jar 后跟其他类名参数(常见误操作导致报错看似“找不到 main class”);
  • Windows 下闪退问题可临时用 cmd /k java -jar test.jar 替代 pause,以便查看完整错误栈。

✅ 总结

该问题本质是 Eclipse 导出逻辑与高版本 JDK 的兼容性演进冲突,而非代码或配置错误。升级并统一使用 JDK 17(LTS)是最简洁、可靠、符合现代 Java 生态的解决方案。同时建议在团队协作中通过 .project 和 pom.xml(若用 Maven)固化 JDK 版本,从源头规避此类环境差异问题。

热门AI工具

更多
咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
eclipse教程
eclipse教程

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

570

2023.06.14

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

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

4786

2023.07.24

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

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

7299

2023.11.02

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等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2784

2024.02.23

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

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

622

2024.02.23

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

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

3066

2025.10.10

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

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

3085

2025.10.10

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

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

428

2025.10.15

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

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

精品课程

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

共35课时 | 47.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn