温馨提示×

linux java怎样打包应用

小樊
36
2026-10-24 09:02:49
栏目: 编程语言

在 Linux 下用 Java 打包应用,常见有几种方式,取决于你是普通 Java 项目、Spring Boot,还是想做成可直接运行的 Linux 服务。下面按常见场景说明。


一、普通 Java 项目(非 Spring Boot)

1. 使用 jar 命令打包

编译

javac -d out src/com/example/*.java

打包

jar cvf app.jar -C out .

运行

java -jar app.jar

如果你的程序有 main 方法,需要在 META-INF/MANIFEST.MF 中指定:

Main-Class: com.example.Main

2. 使用 Maven 打包(推荐)

mvn clean package

生成:

target/app.jar

若想生成可执行 jar(包含所有依赖):

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>com.example.Main</mainClass>
      </manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>
mvn clean package assembly:single

二、Spring Boot 项目(最常见)

1. Maven 打包

mvn clean package

生成:

target/your-app.jar

2. 运行

java -jar your-app.jar

3. 指定环境运行

java -jar your-app.jar --spring.profiles.active=prod

三、打包成 Linux 服务(systemd)

1. 创建服务文件

sudo vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My Java App
After=network.target

[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
SuccessExitStatus=143
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

四、使用 docker 打包(强烈推荐生产环境)

示例 Dockerfile

FROM openjdk:17-jdk-slim
COPY target/app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建

docker build -t myapp .
docker run -d -p 8080:8080 myapp

五、打包成可执行文件(进阶)

可使用:

  • jpackage(JDK 14+)
  • GraalVM native-image

示例(jpackage):

jpackage --name myapp --input target --main-jar app.jar

总结建议

场景 推荐方式
学习/测试 java -jar
Web 服务 Spring Boot + systemd
生产部署 Docker
无 JVM 依赖 GraalVM / jpackage

如果你愿意,可以告诉我:

  • 用的是 Maven 还是 Gradle
  • 是否是 Spring Boot
  • 是否要 Linux 服务 / Docker / 无 JVM

我可以直接给你一套完整打包方案。

0 踩