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

如何正确制作.jar文件并转为.exe?解决转换后运行报错问题

解决javax/mail/search/SearchTerm缺失错误及完整打包流程

一、先搞定当前报错

NoClassDefFoundError: javax/mail/search/SearchTerm的问题根源很直接:你的JavaMail API依赖没被打包进最终的jar文件里。SearchTerm是JavaMail库的核心类,你的代码调用了它,但生成的jar只包含了你自己写的代码,没带上这个必需的依赖。

解决方法:

  • 用IDE(IntelliJ/Eclipse)导出jar时,必须选带依赖打包的选项:
    • IntelliJ:导出选"Artifact",类型设为"JAR",配置里把JavaMail的jar包添加到输出目录,或者勾选"Extract to the target JAR",把依赖内容合并进主jar。
    • Eclipse:导出窗口选"Runnable JAR File",在"Library handling"里选"Package required libraries into generated JAR",所有依赖会被打包进同一jar。
  • 手动用jar命令打包的话,要把JavaMail的jar和你的class文件放在同一目录,打包时一并包含;或者用jar uf命令把依赖jar的内容合并到你的主jar里。

二、正确制作可执行JAR的步骤

核心要求是把自身代码+所有第三方依赖打包成一个可运行的jar:

  1. 确认项目有正确的主类(带main方法的类),IDE里提前设置好主类路径。
  2. 打包时选择"可执行JAR(Runnable JAR)",而非普通JAR。
  3. 必须将所有第三方依赖(比如JavaMail、GUI相关库)一同打包,避免运行时出现类缺失。

三、用Launch4J转成带JRE的EXE(无Java环境也能运行)

要让exe在未装Java的电脑上运行,关键是将JRE与exe绑定:

  1. 准备适配Windows的JRE(版本与项目一致,32/64位对应),把JRE文件夹重命名为jre,放在和可运行jar同一目录。
  2. 打开Launch4J,完成以下配置:
    • Basic标签:设置Output file(生成exe的路径),Jar路径选你打好的可运行jar,主类填main方法所在类的全路径(比如com.xxx.MyApp)。
    • JRE标签:在"Bundled JRE path"里填./jre(相对路径,exe会自动查找同目录下的jre文件夹),设置Minimum JRE版本(比如项目用1.8就填1.8),勾选"Only use private JRE",避免调用系统Java。
    • Icons标签:可设置exe图标,需用.ico格式文件。
  3. 点击"Build wrapper"生成exe,最后把exe、jre文件夹、主jar(若未合并依赖则需包含)一起压缩分发,对方直接运行exe即可。

补充:JRE体积较大,可使用jlink工具裁剪出仅包含项目所需模块的自定义JRE,能大幅缩小体积。

内容的提问来源于stack exchange,提问作者Kamil Poniedziałek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:50:32