Debian上Java编译工具链如何配置
小樊
34
2025-11-25 06:53:45
Debian上Java编译工具链配置指南
一 安装JDK与基础验证
- 更新索引并安装开发工具包(JDK):
- 安装系统默认版本:sudo apt update && sudo apt install -y default-jdk
- 或指定版本(示例为OpenJDK 17):sudo apt install -y openjdk-17-jdk
- 验证安装结果:
- java -version
- javac -version
- 说明:Debian仓库默认提供OpenJDK实现,选择版本时优先使用带有**-jdk**后缀的包。
二 配置环境变量与JAVA_HOME
- 查找实际安装路径(便于设置JAVA_HOME):
- 执行:readlink -f $(which java),输出类似:/usr/lib/jvm/java-17-openjdk-amd64/bin/java
- 取前缀目录作为JAVA_HOME:/usr/lib/jvm/java-17-openjdk-amd64
- 设置方式一(用户级,仅当前用户):
- 编辑:nano ~/.bashrc
- 追加:
- export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
- export PATH=$JAVA_HOME/bin:$PATH
- 生效:source ~/.bashrc
- 设置方式二(系统级,所有用户):
- 编辑:sudo nano /etc/environment
- 添加:JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64”
- 生效:对新开会话自动生效,或执行:source /etc/environment
- 验证:echo $JAVA_HOME 应返回所设路径。
三 多版本管理与切换
- 使用update-alternatives注册与切换默认Java命令:
- 注册示例(路径按实际调整):
- sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 300
- sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 300
- 交互选择默认版本:sudo update-alternatives --config java(同理可对javac执行)
- 建议对java与javac分别注册并同步切换,避免运行时与编译器版本不一致。
四 编译与运行示例
- 单文件编译运行:
- 源码(HelloWorld.java):
- public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello, World!”); } }
- 编译:javac HelloWorld.java
- 运行:java HelloWorld
- 多目录与依赖示例:
- 编译:javac -sourcepath src -d bin src/com/example/Main.java
- 运行:java -cp bin com.example.Main
- 提示:类路径分隔符在Linux下使用冒号(:)。
五 项目构建与IDE
- 使用构建工具(适合中大型项目):
- Maven:sudo apt install -y maven,在项目中执行:mvn clean install
- Gradle:可使用SDKMAN安装(见下节),在项目根目录执行:gradle build
- 编辑器与IDE:
- VS Code:sudo apt install -y code,安装扩展包Java Extension Pack
- IntelliJ IDEA:从JetBrains官网下载**.deb**包后安装:sudo dpkg -i ideaIC-*.deb
- 多版本开发与快速切换(可选):
- 使用SDKMAN管理多版本JDK与构建工具:
- 安装:curl -s “https://get.sdkman.io” | bash && source “$HOME/.sdkman/bin/sdkman-init.sh”
- 查看可用Java:sdk list java
- 安装与设为默认:sdk install java 17.0.9-open && sdk default java 17.0.9-open。