在Java多项目开发过程中,不同项目可能依赖不同版本的JDK,比如有的老项目需要JDK8,新项目需要JDK11或者JDK17,如果开发环境没有统一JDK版本配置,很容易出现编译报错、运行时类找不到、方法不兼容等问题,影响开发效率。因此掌握统一JDK版本的方法对多项目开发者来说非常重要。

通过系统环境变量统一全局JDK版本
系统环境变量是最基础的JDK版本配置方式,配置后所有未单独指定JDK版本的项目默认使用环境变量指向的JDK。首先需要将目标JDK安装到本地目录,然后配置对应的环境变量。
以Windows系统为例,配置步骤如下:
- 右键点击此电脑,选择属性,进入高级系统设置,点击环境变量
- 在系统变量中新建
JAVA_HOME变量,值为JDK的安装路径,比如C:Program FilesJavajdk-11.0.18 - 编辑系统变量中的
Path变量,新增%JAVA_HOME%bin配置项 - 打开命令行输入
java -version验证版本是否生效
Linux或者macOS系统可以在~/.bashrc或者~/.zshrc文件中添加如下配置:
# 设置JAVA_HOME export JAVA_HOME=/usr/lib/jvm/jdk-11.0.18 # 将JDK的bin目录加入PATH export PATH=$JAVA_HOME/bin:$PATH
使用构建工具统一项目JDK版本
如果不同项目需要不同的JDK版本,通过构建工具单独配置每个项目的JDK版本是更灵活的方式,常用的构建工具Maven和Gradle都支持相关配置。
Maven项目配置JDK版本
Maven可以通过maven-compiler-plugin插件指定项目编译使用的JDK版本,在项目的pom.xml文件中添加如下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<!-- 指定源代码使用的JDK版本 -->
<source>11</source>
<!-- 指定编译后的字节码使用的JDK版本 -->
<target>11</target>
<!-- 指定编译器使用的JDK版本 -->
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
也可以在pom.xml的properties标签中统一配置版本号,方便后续修改:
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
</properties>
Gradle项目配置JDK版本
Gradle项目可以在build.gradle文件中添加如下配置指定JDK版本:
// 指定Java编译版本
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
// 如果需要指定Gradle使用的JDK版本,可以在gradle.properties中添加
// org.gradle.java.home=/usr/lib/jvm/jdk-11.0.18
IDE中配置全局和项目级JDK版本
常用的Java IDE比如IntelliJ IDEA和Eclipse都支持全局JDK配置和单个项目JDK配置,方便开发者快速切换不同项目的JDK版本。
IntelliJ IDEA配置方式
全局JDK配置:打开IDEA,点击File -> Project Structure -> SDKs,点击加号选择本地安装的JDK目录,添加需要的JDK版本,之后新建项目时可以选择对应的JDK。
单个项目JDK配置:打开项目的Project Structure,在Project选项卡中选择项目使用的SDK,在Modules选项卡中可以为每个模块单独设置SDK,优先级高于项目级配置。
Eclipse配置方式
全局JDK配置:点击Window -> Preferences -> Java -> Installed JREs,点击Add添加本地JDK目录,勾选需要作为默认JDK的版本。
单个项目JDK配置:右键点击项目,选择Properties -> Java Build Path -> Libraries,选择JRE System Library,点击Edit可以选择项目使用的JDK版本。
多版本JDK共存的管理方案
如果本地需要安装多个JDK版本,可以使用JDK版本管理工具快速切换,避免反复修改环境变量。
macOS和Linux系统可以使用jenv工具,安装后可以通过以下命令管理JDK版本:
# 添加本地安装的JDK到jenv管理 jenv add /usr/lib/jvm/jdk-8u361 jenv add /usr/lib/jvm/jdk-11.0.18 # 设置全局默认JDK版本 jenv global 11.0.18 # 设置当前目录项目的JDK版本 jenv local 8u361
Windows系统可以使用jdk-switcher类似的工具,或者通过批处理脚本快速切换JAVA_HOME的指向。
统一JDK版本的注意事项
- 配置完成后一定要通过
java -version命令验证当前生效的JDK版本,避免配置未生效 - 构建工具的JDK配置优先级高于系统环境变量,如果项目配置了构建工具JDK版本,会以构建工具配置为准
- 如果项目使用了第三方依赖,需要确认依赖兼容配置的JDK版本,避免出现依赖不兼容的问题
- 开发环境和生产环境的JDK版本尽量保持一致,避免本地运行正常生产环境出现版本相关问题