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

命令行生成的可运行Jar文件失效求助(需适配Jenkins)

解决控制台/Jenkins打包可执行Jar无法启动的问题

你遇到的核心问题是手动打包的Jar缺少指定主类入口的清单文件(Manifest.mf)——IntelliJ在打包时会自动生成这个文件并配置主类,而直接用jar cvf命令打包时默认不会添加,导致JVM找不到启动入口。下面分两种场景给你解决方案:

一、纯控制台命令行打包方案

1. 先创建Manifest清单文件

在你的class文件所在目录下,新建一个名为manifest.mf的文件,内容如下:

Main-Class: first

⚠️ 重要注意事项:

  • 把first替换成你实际包含main()方法的主类全名(如果有包结构,要写完整路径,比如com.yourpackage.first)
  • 文件的最后一行必须是空行,否则Jar命令会无法正确识别这个配置

2. 使用带清单参数的Jar命令打包

执行以下命令,指定清单文件来生成可执行Jar:

jar cvfm final.jar manifest.mf first.class first$another.class second.class

参数解释:

  • c:创建新的Jar文件
  • v:显示打包过程的详细日志
  • f:指定生成的Jar文件名(这里是final.jar)
  • m:指定要使用的Manifest清单文件(这里是manifest.mf)

打包完成后,用java -jar final.jar就能正常启动了。

二、Jenkins集成方案(更推荐)

在Jenkins中直接用手动命令虽然可行,但更规范可靠的方式是用构建工具(Maven/Gradle)来管理打包流程,避免手动配置的疏漏。

方案1:使用Maven构建(最通用)

  1. 在你的项目根目录下创建pom.xml文件,参考以下模板配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yourgroup</groupId> <!-- 替换成你的项目组ID -->
    <artifactId>your-project</artifactId> <!-- 替换成你的项目ID -->
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <!-- 配置编译插件,指定JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>1.8</source> <!-- 替换成你的JDK版本 -->
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 配置Jar插件,指定主类生成可执行Jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>first</mainClass> <!-- 替换成你的主类全名 -->
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  1. 在Jenkins中配置任务:
    • 选择Maven项目(如果没有这个选项,先安装Jenkins的Maven插件)
    • 配置代码仓库地址(如果你的代码在Git/SVN上)
    • 在Build步骤中,输入目标命令:clean package
    • 执行任务后,Maven会自动完成编译、打包,生成的可执行Jar会在target目录下

方案2:直接用Jenkins执行Shell/Batch命令

如果不想用构建工具,也可以在Jenkins中添加Execute Shell(Linux/macOS)或Execute Windows Batch Command(Windows)步骤,执行以下流程:

  1. 先编译Java文件:javac first.java second.java(如果有依赖Jar,要加-cp参数指定classpath)
  2. 创建manifest.mf文件(可以用echo命令生成,比如Linux下:echo -e "Main-Class: first\n" > manifest.mf)
  3. 执行打包命令:jar cvfm final.jar manifest.mf *.class

额外注意事项

  • 如果你的项目有外部依赖Jar,手动打包时需要把依赖也包含进去(可以用jar命令把依赖Jar一起打包,或者用Maven的maven-shade-plugin生成包含依赖的Fat Jar)
  • 确保Jenkins节点上配置了正确的JDK环境,在Jenkins全局工具配置中指定JDK路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:51:12