最简单的情况(不依赖外部库,只有一个源文件)
如果你的项目非常简单,只有一个 .java 文件,并且没有使用任何外部的库(commons-lang3 等),Eclipse 可以一键完成。

步骤:
-
项目右键 -> Export 在你的项目名称上点击鼠标右键,在弹出的菜单中选择
Export。 -
选择 JAR 文件格式 在弹出的
Export窗口中,展开Java文件夹,然后选择JAR file,点击Next。 -
配置 JAR 导出选项
(图片来源网络,侵删)- Select the export destination: 选择你想要保存 JAR 文件的路径和文件名(
C:\MyProject\my-app.jar)。 - Select the resources to export: 确保
src文件夹(或者包含你.java文件的文件夹)被勾选,这会把你的源代码文件打包进去。 - Export generated class files into source folder: 这个选项通常保持默认的
bin文件夹,它会编译后的.class文件打包进去。 - Select the export destination: 点击
Browse选择一个保存位置,C:\MyProject\my-app.jar。
- Select the export destination: 选择你想要保存 JAR 文件的路径和文件名(
-
完成 点击
Finish,Eclipse 会在你指定的位置生成一个 JAR 文件。
如何运行这个 JAR?
打开命令行(CMD 或 PowerShell),进入到 JAR 文件所在的目录,然后运行:
java -jar my-app.jar
包含外部依赖库(最常见的情况)
如果你的项目依赖了外部的 JAR 包(从 Maven 或 Gradle 下载的库),直接使用上面的方法会导致 ClassNotFoundException,因为 JAR 文件内部没有包含这些依赖库。
解决这个问题的最佳方式是使用 Eclipse 的 Build Path 功能。
步骤:
-
添加依赖库到项目
- 在你的项目上右键 ->
Build Path->Configure Build Path。 - 在
Libraries标签页中,点击Add External JARs...。 - 选择你的项目所依赖的所有外部 JAR 文件,然后点击
OK,这些库现在会出现在你的Referenced Libraries中。
- 在你的项目上右键 ->
-
导出为可运行的 JAR
- 项目右键 -> Export ->
Java->Runnable JAR file,然后点击Next。 - Launch configuration: 在下拉菜单中选择你的主类,这个主类是你程序执行的入口(包含
public static void main(String[] args)方法的类),如果下拉菜单为空,说明你的项目没有正确设置主类。 - Export destination: 选择你想要保存的 JAR 文件路径。
- Library handling: 这是最关键的一步!
- Option 1: Package required libraries into generated JAR (推荐): 这是最推荐的方式,它会将所有依赖的库都打包进最终的 JAR 文件中,生成一个“胖 JAR”(Fat JAR)或“超级 JAR”(Uber JAR),这样你只需要分发这一个文件即可。
- Option 2: Copy required libraries into a sub-folder next to the generated JAR: 这种方式会将依赖库放在一个单独的文件夹中(
lib/),运行时需要配置 Classpath。 - Option 3: Copy required libraries into the generated JAR's root folder at build time: 不推荐,容易造成混乱。
- 选择 Option 1,然后点击
Finish。
- 项目右键 -> Export ->
-
完成 Eclipse 会生成一个包含所有依赖的单一 JAR 文件。
如何运行这个 JAR?
和场景一完全一样,直接在命令行运行:
java -jar my-app.jar
使用 Maven 或 Gradle 构建项目(企业级标准)
对于任何非 trivial 的项目,手动管理依赖和构建都是不推荐的,业界标准是使用 Maven 或 Gradle,Eclipse 对它们有极好的集成支持(Maven/Gradle 插件)。
如果你使用 Maven 或 Gradle,打包过程就变得非常简单和标准化。
以 Maven 为例:
-
确保项目是 Maven 项目 你的项目应该有一个
pom.xml文件,如果不是,可以在项目上右键 ->Configure->Convert to Maven Project。 -
配置主类 (可选,但推荐) 在
pom.xml文件中,添加或修改build插件来指定主类:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.example.myapp.Main</mainClass> <!-- 替换成你的主类全名 --> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>- 为什么用
maven-shade-plugin而不是默认的maven-jar-plugin?maven-jar-plugin只会打包项目本身的代码,不会包含依赖。maven-shade-plugin会创建一个“胖 JAR”,它会将所有依赖库都合并进来,并且可以通过上面的配置设置Main-Class,生成的 JAR 文件就可以直接用java -jar运行,这是最常用的方式。
- 为什么用
-
执行打包命令
- 在 Eclipse 中: 打开
Maven视图(Window->Show View->Other->Maven),找到你的项目,展开Lifecycle,双击package。 - 在命令行中: 进入项目根目录(有
pom.xml的目录),运行mvn clean package。
- 在 Eclipse 中: 打开
-
找到生成的 JAR 打包成功后,你可以在
target目录下找到一个以-jar结尾的文件,my-app-1.0-SNAPSHOT-jar-with-dependencies.jar,这个就是你可以直接运行的胖 JAR。
常见问题与解决方案
Q1: 运行 JAR 时提示 "no main manifest attribute, in my-app.jar"
- 原因: 你使用的导出方式是普通的
JAR file,而不是Runnable JAR file,或者,在 Maven/Gradle 中没有正确配置Main-Class。 - 解决方案:
- 使用
Runnable JAR file导出方式,并正确选择主类。 - 检查
pom.xml或build.gradle文件中是否正确配置了主类。
- 使用
Q2: 运行 JAR 时提示 ClassNotFoundException
- 原因: JAR 文件中缺少运行时所需的某个依赖库。
- 解决方案:
- 使用
Runnable JAR file导出方式,并在Library handling中选择Package required libraries into generated JAR。 - 使用 Maven/Gradle 的构建工具,并使用
shade或assembly插件来生成包含所有依赖的胖 JAR。
- 使用
Q3: JAR 文件很大,包含了很多不必要的文件
- 原因: 打包时包含了
src目录下的源代码(.java文件)。 - 解决方案:
- 在导出 JAR 时,确保只勾选了
bin目录(编译后的.class文件),而不要勾选src目录。 - Maven/Gradle 默认只会打包编译后的
target/classes或build/classes,所以不会有这个问题。
- 在导出 JAR 时,确保只勾选了
| 场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 简单项目 | Eclipse Export -> JAR file |
快速,无需额外配置 | 无法处理依赖,不推荐用于复杂项目 |
| 含依赖项目 | Eclipse Export -> Runnable JAR file |
图形化界面,操作直观 | 项目变大后管理困难,容易出错 |
| 企业级项目 | Maven / Gradle | 行业标准,依赖管理、构建流程清晰,可复用性强 | 需要学习构建工具的基本知识 |
对于任何认真的项目,请从第一天就开始使用 Maven 或 Gradle,这会为你省去未来无数的麻烦,对于临时的、小型的测试脚本,可以使用 Eclipse 的导出功能快速生成一个 JAR。
