Linux环境下如何运行Java程序?

在 Linux 环境下运行 Java 程序,核心流程围绕环境准备、代码编译、执行启动三个环节展开。以下是基于生产环境最佳实践的操作指南:

1. 环境准备与验证

Java 程序运行依赖 JVM(Java 虚拟机)。首先需确认系统已安装 JDK(Java Development Kit)或 JRE(Java Runtime Environment)。对于生产环境,通常推荐安装 JDK 以支持调试和版本管理。

使用以下命令检查版本:

java -version
javac -version

若提示 command not found,说明未配置环境变量。国内主流云厂商(如阿里云 ECS、腾讯云 CVM)的镜像通常预装了 OpenJDK,但建议手动指定路径以确保版本可控。

配置环境变量示例(以 /opt/java/jdk-17 为例):
编辑 ~/.bashrc/etc/profile

export JAVA_HOME=/opt/java/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
source ~/.bashrc

注:现代 JDK(8u20+)及 JDK 9+ 后,CLASSPATH 通常不再需要显式配置,重点在于 JAVA_HOME 和 PATH。

2. 代码编译(针对 .java 源码)

如果手头是 .java 源代码文件,必须先通过 javac 编译器生成字节码文件(.class)。

# 编译当前目录下的 Main.java
javac Main.java

# 输出到特定目录(推荐做法,便于管理)
javac -d ./target/classes src/com/example/Main.java

编译成功后,会生成对应的 .class 文件。若项目结构复杂(包含多个包),建议使用构建工具如 MavenGradle 进行统一编译打包,避免手动处理类路径问题。

3. 程序执行

使用 java 命令加载 JVM 并执行主类。注意:命令中只需写类名,不要加 .class 后缀,且需确保当前工作目录在 Classpath 中。

基础运行:

java com.example.Main

若主类在当前目录:

java Main

带参数运行:

java -Duser.timezone=Asia/Shanghai com.example.Main arg1 arg2

4. 生产环境优化建议

在实际部署中,直接在前台运行 java Main 会导致进程随终端关闭而终止,因此需采用后台守护方式:

  • 使用 nohup 或 screen/tmux

    nohup java -Xms512m -Xmx2g com.example.Main > app.log 2>&1 &
    • -Xms / -Xmx:设置堆内存初始值和最大值,防止 OOM。
    • > app.log 2>&1:将标准输出和错误输出重定向到日志文件。
  • 使用 Systemd 管理(推荐)
    创建 /etc/systemd/system/myapp.service,实现开机自启、崩溃自动重启等能力。这是云原生环境下的标准运维方式。

  • 容器化部署
    现代架构常将 Java 应用打包为 Docker 镜像,利用 Kubernetes 编排。此时 Linux 宿主机无需安装 JDK,由容器内隔离环境提供运行支撑。

5. 常见问题排查

  • ClassNotFound:检查 java 命令是否指定了正确的包名(含包路径),或 Classpath 是否缺失依赖库。
  • 端口占用:若 Web 应用无法启动,使用 netstat -tlnp | grep <端口> 排查冲突。
  • 权限问题:确保脚本有执行权限 (chmod +x script.sh),且文件所有者正确。

遵循上述步骤,即可在各类 Linux 发行版(CentOS, Ubuntu, Debian 等)及云服务器环境中稳定运行 Java 应用。

未经允许不得转载:CLOUD云枢 » Linux环境下如何运行Java程序?