Java在Ubuntu上如何打包发布
在Ubuntu上打包Java应用,常见方式包括:使用Maven或Gradle生成可执行JAR文件,打包为Debian安装包,通过Docker容器化实现跨平台部署,以及借助Launch4j转为Windowsexe可执行文件。环境需先安装JDK开发工具包和构建工具,根据不同的场景灵活选用即可。
在Ubuntu上部署Ja va应用,打包发布是绕不开的一个环节。下面把整个过程梳理一遍,从环境准备到可执行JAR、Deb安装包、Docker容器化,甚至再提一下如何转成Windows下的.exe,覆盖了最常见的几种发布场景。大家可以根据实际需求灵活选用。

1. 准备基础环境
开始之前,先把基础工具装齐——JDK和构建工具(Ma ven或Gradle)得先装好,这是编译和打包的前提。
- 安装OpenJDK(以JDK 11为例):
验证安装:sudo apt updatesudo apt install openjdk-11-jdkja va -version(显示版本信息即表示成功)。 - 安装Ma ven(可选,用于项目构建):
验证安装:sudo apt install ma venmvn -version。
2. 使用构建工具生成可执行JAR(最常用)
把应用打包成可执行JAR是最常见的方式,操作简单,分发方便。下面以Ma ven和Gradle为例分别说明。
Ma ven项目
- 配置
pom.xml:添加ma ven-jar-plugin(指定主类)和ma ven-dependency-plugin(复制依赖到lib目录),确保生成的JAR包含所有依赖:org.apache.ma ven.plugins ma ven-jar-plugin 3.2.0 true lib/ com.example.MainClass ma ven-dependency-plugin 3.2.0 copy-dependencies package copy-dependencies - 执行打包命令:
生成的JAR文件位于mvn clean packagetarget/目录(如my-app-1.0-SNAPSHOT.jar)。
Gradle项目
- 配置
build.gradle:应用ja va和application插件,指定主类,并将依赖复制到JAR中:plugins {id 'ja va'id 'application'}mainClassName = 'com.example.MainClass' // 替换为你的主类jar {manifest {attributes 'Main-Class': mainClassName}from {configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }}} - 执行打包命令:
生成的JAR文件位于gradle clean buildbuild/libs/目录(如my-app-1.0.jar)。
3. 打包为Debian安装包(.deb,适合Ubuntu分发)
若需将Ja va应用打包为Ubuntu原生安装包(支持apt安装),可使用dpkg-deb工具:
- 创建目录结构:
mkdir -p my-ja va-app/DEBIAN my-ja va-app/usr/bin my-ja va-app/usr/share/applications - 编写
control文件(位于DEBIAN/目录):定义包元数据(名称、版本、依赖等):Package: my-ja va-appVersion: 1.0Architecture: allMaintainer: Your NameDepends: openjdk-11-jre# 依赖的Ja va运行时Description: A brief description of your Ja va application - 创建启动脚本(位于
usr/bin/目录,如my-ja va-app):
赋予执行权限:#!/bin/shja va -jar /usr/share/ja va/my-ja va-app.jar# 替换为实际JAR路径chmod +x my-ja va-app/DEBIAN/my-ja va-app。 - 复制JAR文件:将构建好的可执行JAR复制到
usr/share/ja va/目录(如my-ja va-app.jar)。 - 打包为.deb:
生成的cd my-ja va-appsudo dpkg-deb --build ..deb文件位于上级目录(如my-ja va-app_1.0_all.deb),可通过sudo dpkg -i my-ja va-app_1.0_all.deb安装。
4. 使用Docker容器化发布(跨平台部署)
将Ja va应用打包为Docker镜像,实现跨平台、一致性部署:
- 创建
Dockerfile(位于项目根目录):FROM openjdk:11-jdk-slim# 使用轻量级OpenJDK镜像WORKDIR /appCOPY target/my-app.jar .# 复制构建好的JAR(Ma ven示例)EXPOSE 8080# 暴露应用端口CMD ["ja va", "-jar", "my-app.jar"]# 启动命令 - 构建镜像:
docker build -t my-ja va-app . - 运行容器:
此时可通过docker run -p 8080:8080 my-ja va-app# 将容器端口8080映射到主机端口8080http://localhost:8080访问应用。
5. 可选:生成Windows可执行文件(.exe)
若需在Windows平台运行Ja va应用,可使用Launch4j工具将JAR打包为.exe:
- 下载并安装Launch4j:从官网下载后解压。
- 配置Launch4j:
- 选择“JAR in EXE mode”,添加你的JAR文件。
- 配置输出路径(如
my-app.exe)、图标等。 - 在“JRE”选项卡中设置最低Ja va版本(如
11)。
- 生成.exe文件:点击“Build wrapper”即可生成。
以上方法覆盖了Ja va在Ubuntu上的常见打包发布场景。快速分发用JAR,正式发布用.deb,跨平台部署首选Docker,如果还需要支持Windows,不妨再转成.exe。根据实际需求灵活选择即可。
AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。
AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。
AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。
Fuzor Windows版是一套面向建筑、工程与施工团队的BIM/VDC平台,可汇集多来源模型和进度数据,完成实时可视化、4D施工推演、场地物流规划、问题检查、成果演示及团队协同。
Gety Windows版是一款本地AI文件搜索工具,可索引电脑中的文档和图片,通过全文搜索、语义检索与OCR快速定位内容,并提供原版式预览、筛选和AI工具连接功能。
iMazing Windows版是一款面向iPhone、iPad和iPod用户的本地设备管理工具,可在电脑上完成多版本备份、照片与音乐传输、信息导出、应用数据管理以及新旧设备迁移。













