1. 确认系统中已安装的Java版本
首先通过终端命令查看当前系统中安装的所有Java版本,明确冲突来源(如多个JDK/JRE共存)。执行以下命令:
java -version # 查看默认Java运行时版本
javac -version # 查看默认Java编译器版本
若输出显示多个版本(如同时存在Java 8和Java 11),则需要进一步管理这些版本。
2. 使用update-alternatives工具管理多版本Java
CentOS自带的update-alternatives工具可便捷管理多个Java版本,实现默认版本的切换。
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk/bin/java 1
sudo alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac 1
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 2
sudo alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk/bin/javac 2
其中/usr/lib/jvm/路径需替换为实际JDK安装目录。sudo alternatives --config java
sudo alternatives --config javac
选择后,系统会将选中的版本设为默认,解决编译/运行时的版本冲突。3. 手动配置环境变量确保一致性
环境变量未正确设置是导致编译冲突的常见原因,需调整JAVA_HOME和PATH变量。
/etc/profile)或用户级(~/.bashrc)配置,添加以下内容(以Java 11为例):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 替换为实际JDK路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile(全局)或source ~/.bashrc(用户级),使变量立即生效。4. 卸载不需要的Java版本
若某些Java版本不再使用,可通过yum包管理器彻底卸载,避免残留冲突。
sudo yum remove java-<version>-openjdk* # 替换<version>为要卸载的版本(如1.8.0)
例如,卸载Java 8:sudo yum remove java-1.8.0-openjdk*。
5. 使用构建工具解决依赖冲突(针对项目编译)
若编译冲突由项目依赖(如Maven/Gradle项目中的库版本不一致)引起,需通过构建工具管理依赖。
mvn dependency:tree查看依赖树,找出冲突的依赖(如多个版本的log4j),在pom.xml中使用<exclusions>排除冲突的传递依赖:<dependency>
<groupId>com.example</groupId>
<artifactId>example-lib</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
或使用<dependencyManagement>强制指定依赖版本。gradle dependencies查看依赖树,使用exclude排除冲突依赖:implementation('com.example:example-lib:1.0.0') {
exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
}
或通过resolutionStrategy强制指定版本。6. 使用第三方工具简化版本管理(可选)
对于频繁切换Java版本的需求,可使用第三方工具提升效率:
curl -s "https://get.sdkman.io" | bash,然后通过sdk install java 11.0.1-open安装指定版本,使用sdk use java 11.0.1-open切换版本,sdk default java 11.0.1-open设置全局默认版本。jenv add /usr/lib/jvm/java-11-openjdk添加Java版本,使用jenv global 11设置全局版本,或jenv local 11设置项目级版本。