一、前置准备:更新系统并安装Java运行环境
在Debian上部署Java应用前,需确保系统为最新状态,并安装Java运行环境(JRE/JDK)。推荐使用OpenJDK(Debian默认提供,开源且稳定):
# 更新系统软件包列表及已安装的包
sudo apt update && sudo apt upgrade -y
# 安装OpenJDK 11(可根据需求替换为17、21等版本,如`openjdk-17-jdk`)
sudo apt install openjdk-11-jdk -y
# 验证安装(输出Java版本信息则表示成功)
java -version
上述命令会安装JDK(包含编译器javac),若仅需运行Java程序,可安装更轻量的openjdk-11-jre。
二、编译Java应用(本地开发环境)
若需在Debian上本地编译Java代码,需先准备好源代码结构(如src/com/example/YourMainClass.java),再执行以下步骤:
# 创建输出目录(用于存放编译后的.class文件)
mkdir -p out
# 编译Java源文件(指定源文件目录`src`,输出到`out`目录)
javac -d out src/com/example/YourMainClass.java
# 验证编译结果(`out`目录下应生成对应的.class文件)
ls out/com/example/
若项目依赖第三方库,需通过-cp参数指定类路径,例如:javac -cp "libs/*":src -d out src/com/example/YourMainClass.java。
三、打包Java应用为可执行JAR
为方便部署,建议将编译后的类文件打包为可执行JAR(包含MANIFEST.MF文件指定主类):
# 创建MANIFEST.MF文件(指定主类,如`com.example.YourMainClass`)
echo "Manifest-Version: 1.0" > MANIFEST.MF
echo "Main-Class: com.example.YourMainClass" >> MANIFEST.MF
# 打包为JAR(`-C out .`表示切换到`out`目录后打包所有内容)
jar cfm your-app.jar MANIFEST.MF -C out .
# 验证JAR包(输出主类信息则表示打包成功)
jar tf your-app.jar
打包后,可通过java -jar your-app.jar直接运行应用。
四、部署JAR到Debian服务器
将本地打包好的JAR文件上传至服务器(如使用scp命令):
# 将本地`your-app.jar`上传至服务器`/opt/java-apps`目录(需提前创建)
scp your-app.jar user@your-server-ip:/opt/java-apps/
上传后,登录服务器并验证文件是否存在:ls -l /opt/java-apps/your-app.jar。
五、运行Java应用
在服务器上,通过java -jar命令运行JAR文件:
# 运行JAR(指定JAR路径)
java -jar /opt/java-apps/your-app.jar
# 若需后台运行(脱离终端),可使用`nohup`或`&`
nohup java -jar /opt/java-apps/your-app.jar > app.log 2>&1 &
nohup:防止进程因终端关闭而终止;> app.log:将输出重定向到app.log文件;2>&1:将错误输出合并到标准输出。六、设置开机自启动(可选)
若需应用在服务器重启后自动运行,可通过systemd创建服务:
# 创建服务文件(`your-app.service`)
sudo nano /etc/systemd/system/your-app.service
# 写入以下内容(根据实际情况修改`User`、`ExecStart`路径)
[Unit]
Description=Your Java Application
After=network.target
[Service]
User=www-data # 建议使用非root用户(如www-data、appuser)
ExecStart=/usr/bin/java -jar /opt/java-apps/your-app.jar
SuccessExitStatus=143 # 处理JVM正常退出信号
Restart=on-abort # 异常退出时自动重启
RestartSec=10 # 重启间隔10秒
[Install]
WantedBy=multi-user.target
# 保存并退出(Ctrl+O→回车→Ctrl+X)
# 启用服务(设置开机自启)
sudo systemctl enable your-app.service
# 启动服务
sudo systemctl start your-app.service
# 查看服务状态(确认运行正常)
sudo systemctl status your-app.service
通过上述步骤,应用会在服务器启动时自动运行,无需手动干预。
七、可选:管理多个Java版本
若服务器需同时运行多个Java版本(如11与17),可使用update-alternatives工具切换默认版本:
# 注册Java版本到alternatives系统(以OpenJDK 11和17为例)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1100
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700
# 切换默认Java版本(交互式选择)
sudo update-alternatives --config java
# 验证当前默认版本
java -version
该工具可方便地在不同Java版本间切换,避免版本冲突。