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

如何创建包含外部JAR包的Java可执行JAR文件?

打包含外部依赖的Java应用为单个JAR文件(用于转换为可执行文件)

我正在开发一个依赖JFreeCharts和JCommon等外部JAR包的Java应用,目前全程通过命令行完成编译与运行,具体命令如下:

当前编译命令

javac -d build\classes -cp ".;build\\resources\\jfreechart-1.0.1.jar;build\\resources\\jcommon-1.0.0.jar" @files_info.txt

当前运行命令

进入build\classes目录后执行:

java -cp ".;..\\resources\\jfreechart-1.0.1.jar;..\\resources\\jcommon-1.0.0.jar" app @classes_info.txt

需求

现在我希望将该应用打包成单个JAR文件,后续用于转换成可执行文件。

无外部依赖时的打包方式

之前开发不含外部库的应用时,我会进入build\classes目录,通过以下命令生成并运行JAR:

# 生成JAR(需提前创建manifest.txt指定主类)
jar cvfm ..\app.jar manifest.txt *.class
# 运行JAR
java -jar ..\app.jar

注意:我未使用任何IDE,全程通过命令行完成编译、运行及打包操作。


解决方案:构建包含依赖的胖JAR

要打包单个包含所有外部依赖的JAR,可按以下步骤操作:

  1. 解压外部依赖JAR到临时目录
    在项目根目录下创建临时文件夹,将依赖JAR解压进去:
mkdir temp_lib
cd temp_lib
jar xf ../build/resources/jfreechart-1.0.1.jar
jar xf ../build/resources/jcommon-1.0.0.jar
  1. 将依赖文件复制到编译后的类目录
    把临时目录中的所有文件复制到build\classes目录,覆盖重复文件(通常不会有冲突):
xcopy /E /Y * ../build/classes/
  1. 创建MANIFEST.MF文件
    进入build\classes目录,创建manifest.txt文件,内容如下(替换app为你的实际主类名):
Manifest-Version: 1.0
Main-Class: app
  1. 打包成单个JAR
    在build\classes目录执行打包命令:
jar cvfm ../app.jar manifest.txt *

完成后,生成的app.jar就是包含所有依赖的可独立运行的JAR文件,直接用java -jar app.jar即可运行,之后就可以用Launch4j将其转换为可执行文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:57:46