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設置項目級版本。