使用 Eclipse 内置的 "Export" 功能 (简单快捷)
这是最直接、最简单的方法,适合小型、单一文件的项目,或者对依赖管理要求不高的场景。

优点
- 操作简单,无需额外插件。
- 所有操作都在 Eclipse 界面内完成。
缺点
- 不包含第三方依赖库:如果你的项目引用了外部的
.jar文件(如commons-io.jar,mysql-connector-java.jar等),生成的.jar文件无法直接运行,会报ClassNotFoundException或NoClassDefFoundError。 - 配置 MANIFEST.MF 文件较麻烦:需要手动指定主类(
Main-Class),步骤稍显繁琐。
详细步骤:
前提:你的项目必须有一个主类(含 main 方法的类)
假设你的主类是 com.example.HelloWorld。
第 1 步:准备项目结构
- 在 Eclipse 的 "Package Explorer" 视图中,右键点击你的项目,选择 Properties。
- 在弹出的窗口中,左侧选择 Java Build Path。
- 在右侧的 Libraries 选项卡中,确保所有你需要的第三方库(JARs)都已经被添加到项目中,这些库通常位于
Referenced Libraries或Libraries列表中。 - 关键一步:将所有需要的第三方库(.jar 文件)复制到你的项目文件夹中。
- 在 Package Explorer 中,右键点击项目,选择 Show In -> System Explorer (或 File)。
- 在文件管理器中,进入你的项目根目录。
- 创建一个新文件夹,例如命名为
lib。 - 将
Referenced Libraries中的所有.jar文件复制到这个lib文件夹里。 - 返回 Eclipse,右键点击项目 -> Refresh,你会看到
lib文件夹已经出现在项目中。
第 2 步:导出为 JAR 文件

-
在 Package Explorer 中,右键点击你的项目,选择 Export...。
-
在弹出的 "Export" 窗口中,展开 Java 文件夹,选择 JAR file,然后点击 Next >。
-
JAR File Specification 窗口:
- Select the export destination: 点击 Browse...,选择一个保存位置,并给你的文件命名,
MyApp.jar。 - Select the resources to export: 确保你的项目源代码(
src文件夹下的所有.java文件编译后的.class文件)被勾选,默认情况下,Eclipse 会勾选整个项目,这通常是正确的。 - Export generated class files and resources: 保持默认勾选。
- Export source files: 如果需要,可以勾选,这样生成的 JAR 里会包含源代码,但会增加文件体积。
- Export all output folders for checked projects: 保持默认勾选。
- Select the export destination: 点击 Browse...,选择一个保存位置,并给你的文件命名,
-
最关键的一步:配置 MANIFEST.MF 文件
(图片来源网络,侵删)- 在窗口的底部,勾选 Generate the manifest file。
- 勾选 Use existing manifest from workspace,这会弹出一个窗口,让你选择一个清单文件。
- 点击 Browse...,选择
META-INF/MANIFEST.MF,如果找不到,可以点击 Workspace... -> New...,创建一个新的清单文件,并指定你的主类,格式如下:Manifest-Version: 1.0 Main-Class: com.example.HelloWorld注意:
Main-Class后面必须有一个空格,然后是完整的类名(包含包路径)。 - 另一种更简单的方式是直接在
Export窗口勾选 Generate the manifest file,然后在下方的 Classpath 中,点击 Edit... -> Add External JARs...,将你刚刚复制到lib文件夹里的所有第三方库都添加进来,Eclipse 有时会自动帮你处理。
-
点击 Finish,Eclipse 会开始生成 JAR 文件。
第 3 步:运行 JAR 文件
- 打开命令行(Windows 的 CMD 或 PowerShell,macOS/Linux 的 Terminal)。
- 使用
cd命令进入你存放 JAR 文件的目录。 - 执行命令:
java -jar MyApp.jar
如果程序启动失败,提示找不到类,那很可能是依赖库没有正确打包进去。
使用 Maven (推荐,专业且强大)
对于任何非 trivial 的项目,强烈推荐使用 Maven 或 Gradle 这样的构建工具,Eclipse 对 Maven 有极好的原生支持。
优点
- 自动管理依赖:只需在
pom.xml文件中声明依赖,Maven 会自动下载并管理所有库文件。 - 一键打包:通过一个简单的命令,Maven 会自动将所有依赖和你的代码打包成一个可执行的 "Fat JAR"(也称为 "Uber JAR"),其中包含了所有依赖。
- 标准化项目结构:遵循 Maven 的标准目录结构,使项目更易于维护和协作。
- 生命周期管理:编译、测试、打包、部署等流程清晰明了。
缺点
- 需要学习 Maven 的基本概念和
pom.xml的配置。
详细步骤:
前提:你的项目已经配置了 Maven,并且有一个主类。
第 1 步:确保项目是 Maven 项目
如果你的项目不是 Maven 项目,可以右键点击项目 -> Configure -> Convert to Maven Project。
第 2 步:配置 pom.xml
打开你项目根目录下的 pom.xml 文件,进行如下配置:
-
添加
maven-shade-plugin:这个插件是创建 "Fat JAR" 的标准工具,它会将你的代码和所有依赖库合并到一个 JAR 文件中。在
<plugins>标签内添加以下配置:<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.HelloWorld</mainClass> </transformer> </transformers> <!-- 可选:解决重复资源文件的问题 --> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin> </plugins> </build> -
添加依赖:如果项目需要外部库,在
<dependencies>标签中添加,添加一个日志库:<dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.32</version> </dependency> <!-- 其他依赖... --> </dependencies>
第 3 步:使用 Maven 构建 JAR
-
在 Eclipse 的 "Package Explorer" 中,右键点击你的
pom.xml文件。 -
选择 Run As -> Maven build...。
-
在弹出的 "Edit Configuration" 窗口中:
- Goals 输入框中输入:
clean packageclean: 清理之前的构建文件。package: 执行打包操作。
- 点击 Run。
- Goals 输入框中输入:
-
Eclipse 底部的 "Console" 视图会显示 Maven 的构建过程,如果看到
BUILD SUCCESS,说明构建成功。
第 4 步:找到并运行 JAR 文件
- 在 Package Explorer 中,展开你的项目。
- 你会看到一个名为
target的新文件夹。 - 进入
target文件夹,你会找到一个或多个 JAR 文件,名字最长、通常以-jar-with-dependencies.jar结尾的那个就是
