在 Linux 上搭建可维护、可切换、可上线的 Java 环境
一 安装与版本选择
- 选择 LTS 版本(推荐 Java 11 或 Java 17),兼顾生态兼容与长期支持。
- 安装方式优先级:包管理器安装(简单、可自动更新)> 手动安装(特定版本/Oracle JDK)> 版本管理工具(多版本并存与切换)。
| 发行版与命令 |
安装示例 |
| Debian/Ubuntu |
sudo apt update && sudo apt install openjdk-11-jdk |
| CentOS/RHEL |
sudo yum install java-11-openjdk-devel |
| Fedora |
sudo dnf install java-11-openjdk-devel |
- 验证安装:java -version、javac -version 均应返回一致版本信息。
二 环境变量与多版本管理
- 设置 JAVA_HOME(以实际路径为准,以下为常见路径示例)
- Ubuntu/Debian 常见:/usr/lib/jvm/java-11-openjdk-amd64
- CentOS/RHEL 常见:/usr/lib/jvm/java-11-openjdk
- 手动安装常见:/usr/local/jdk-11
- 配置方式(二选一或并存)
- 用户级(仅当前用户):编辑 ~/.bashrc 或 ~/.zshrc
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export PATH=$JAVA_HOME/bin:$PATH
- 使生效:source ~/.bashrc
- 系统级(所有用户):编辑 /etc/profile 或 /etc/environment
- /etc/profile 示例:
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
- export PATH=$PATH:$JAVA_HOME/bin
- 使生效:source /etc/profile
- 多版本并存与切换
- 使用 alternatives(系统自带)
- 注册:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64 50
- 注册编译器:sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-amd64 50
- 交互选择:sudo update-alternatives --config java(同理配置 javac)
- 使用版本管理工具(更便捷)
- SDKMAN!:curl -s “https://get.sdkman.io” | bash,然后 sdk install java 11.0.11-open,sdk use java 11.0.11-open
- jEnv:git clone https://github.com/jenv/jenv.git ~/.jenv,按文档添加 JDK 并管理全局/项目级版本。
三 开发与运行验证
- 命令行编译运行
- 编写:public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello, Linux Java”); } }
- 编译:javac HelloWorld.java
- 运行:java HelloWorld
- 运行打包应用
- 快速 Web 验证(可选)
- 安装 Tomcat:sudo apt install tomcat9
- 启动:sudo systemctl start tomcat9
- 访问:http://服务器IP:8080(云服务器需放行 8080 端口防火墙/安全组)
四 上线与运维最佳实践
- 构建与依赖管理
- 安装 Maven:sudo apt install maven;或使用 SDKMAN! 管理 Maven/Gradle 版本。
- 容器化交付
- Dockerfile 示例:
- FROM openjdk:11
- COPY target/app.jar /app.jar
- CMD [“java”,“-jar”,“/app.jar”]
- 构建与运行:docker build -t my-java-app .;docker run -it --rm my-java-app
- CI/CD
- 使用 Jenkins/GitHub Actions/GitLab CI 自动化构建、测试、发布。
- 安全与维护
- 保持 JDK 更新 获取安全补丁;对用户输入进行校验,防范 SQL 注入 等漏洞;坚持 单元测试 与 版本控制。
五 常见问题与排查
- 命令未找到或路径错误
- 检查:which java、readlink -f $(which java)、echo $JAVA_HOME、$PATH
- 修正:在 ~/.bashrc 或 /etc/profile 中正确设置 JAVA_HOME 与 PATH,并执行 source 使其生效。
- 多版本混乱
- 使用 alternatives --config java 统一默认版本,或用 SDKMAN!/jEnv 做项目级版本隔离。
- 架构不匹配
- 在 64 位系统误装 32 位 JDK 会导致无法运行;请安装与系统架构一致的版本。