欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

将Java项目打包为可执行JAR 文件的四种方法

2025年08月18日 Java
我将详细介绍将 java 项目打包为可执行 jar 文件的完整流程,包括使用 ide 和命令行两种方法。方法一:使用 intellij idea 打包步骤 1:配置项目结构打开项目点击 file &g

我将详细介绍将 java 项目打包为可执行 jar 文件的完整流程,包括使用 ide 和命令行两种方法。

方法一:使用 intellij idea 打包

步骤 1:配置项目结构

  • 打开项目
  • 点击 file > project structure
  • 在 project settings 中选择 artifacts
  • 点击 + 号 > jar > from modules with dependencies

步骤 2:配置主类

  • 在 "main class" 字段选择主类:例如:com.example.demo.desktopfilesearch
  • 确保选择 "extract to the target jar" 选项
  • 点击 ok

步骤 3:构建 jar 文件

  • 点击 build > build artifacts
  • 选择您的 artifact > build
  • 生成的 jar 文件将位于 out/artifacts/ 目录下

方法二:使用 maven 打包

步骤 1:添加 maven 插件

在 pom.xml 中添加以下插件配置:

<build>
    <plugins>
        <!-- 编译插件 -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-compiler-plugin</artifactid>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        
        <!-- 创建可执行 jar 的插件 -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-jar-plugin</artifactid>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addclasspath>true</addclasspath>
                        <mainclass>com.example.demo.desktopfilesearch</mainclass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        
        <!-- 包含依赖的插件(可选) -->
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-assembly-plugin</artifactid>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainclass>com.example.demo.desktopfilesearch</mainclass>
                    </manifest>
                </archive>
                <descriptorrefs>
                    <descriptorref>jar-with-dependencies</descriptorref>
                </descriptorrefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

步骤 2:执行打包命令

在项目根目录(包含 pom.xml 的目录)打开命令行,执行:

mvn clean package

步骤 3:获取 jar 文件

  • 生成的 jar 文件位于 target/ 目录
  • 如果使用了 assembly 插件,会生成两个文件:
    • your-project-name.jar - 不含依赖
    • your-project-name-jar-with-dependencies.jar - 包含所有依赖

方法三:使用 gradle 打包

步骤 1:配置 build.gradle

在 build.gradle 文件中添加:

plugins {
    id 'java'
    id 'application'
}

application {
    mainclassname = 'com.example.demo.desktopfilesearch'
}

jar {
    manifest {
        attributes 'main-class': 'com.example.demo.desktopfilesearch'
    }
    
    // 包含所有依赖(可选)
    from {
        configurations.runtimeclasspath.collect { it.isdirectory() ? it : ziptree(it) }
    }
}

步骤 2:执行打包命令

在项目根目录执行:

gradle clean build

步骤 3:获取 jar 文件

生成的 jar 文件位于 build/libs/ 目录

方法四:手动创建 jar(不使用构建工具)

步骤 1:编译 java 文件

javac -d target/classes src/main/java/com/example/demo/*.java

步骤 2:创建清单文件

创建 meta-inf/manifest.mf 文件:

manifest-version: 1.0
main-class: com.example.demo.desktopfilesearch
class-path: .

步骤 3:打包为 jar

jar cfm target/your-app.jar meta-inf/manifest.mf -c target/classes .

测试 jar 文件

运行 jar 文件以确保正确打包:

java -jar your-app.jar

常见问题解决

问题:运行 jar 时出现 "no main manifest attribute"

解决方案

  • 确保 manifest.mf 文件包含正确的 main-class 属性
  • 使用 jar tf your-app.jar 检查清单文件是否正确包含
  • 如果使用 maven/gradle,确保插件配置正确

问题:缺少依赖项

解决方案

  1. 使用包含依赖的打包方式(如 maven-assembly-plugin)

  2. 将所有依赖 jar 放在同一目录,使用 -cp 指定类路径:

    java -cp "your-app.jar:libs/*" com.example.demo.desktopfilesearch

问题:资源文件未包含

解决方案

  1. 确保资源文件位于正确位置(如 src/main/resources)

  2. 在构建配置中包含资源目录:

    java -cp "your-app.jar:libs/*" com.example.demo.desktopfilesearch

最佳实践

版本控制:在 jar 文件名中包含版本号

依赖管理

  • 对于简单项目,使用包含依赖的单一 jar
  • 对于大型项目,使用 lib 目录存放依赖

签名验证:使用 jarsigner 对 jar 进行签名

jarsigner -keystore mykeystore.jks -storepass password -keypass password your-app.jar mykey

瘦身打包:使用 proguard 或其它工具减小 jar 大小

跨平台测试:在不同操作系统上测试 jar 文件

总结打包 java 应用程序为 jar 文件是分发和部署的关键步骤。选择适合您项目的打包方法:

  • 简单项目:使用 ide 内置的导出功能
  • 标准项目:使用 maven 或 gradle 构建
  • 需要依赖管理:使用包含依赖的打包方式
  • 特殊需求:手动创建 jar 文件

完成 jar 打包后,您可以进一步使用 launch4j 或 jpackage 工具将其转换为 exe 文件,创建完整的 windows 安装程序。

到此这篇关于将java项目打包为可执行jar 文件的文章就介绍到这了,更多相关java打包jar命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!