天天看點

[Jenkins]JDK版本過高導緻的java.io.IOException: Remote call on xxxx failed

------------------------------------------------------

如需轉載,請注明出處。

文章連結:https://www.cnblogs.com/dzblog/p/9946486.html

更新

2018-11-28:文章寫于11月12日,今日查詢官網發現,在Jenkins最新的weekly版本上已經支援了JDK11,個人未測試,若有需要請更新2.152以後的版本。

changelog資訊:https://jenkins.io/changelog/

環境

Jenkins: 2.7

Slave: Mac OS

場景

發現Jenkin建構能夠成功,不過在最後一步總會提示java.io.IOException: Remote call on xxxx failed

[Jenkins]JDK版本過高導緻的java.io.IOException: Remote call on xxxx failed

原因分析

遇到這種問題毫無頭緒,不過猜測可能是master和slave機器連接配接這裡的問題,查詢官網發現https://issues.jenkins-ci.org/browse/JENKINS-46523,應該是JDK版本的原因導緻。

查詢建構機的java版本,發現是JDK11。

➜  Home java --version
java 11.0.1 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)      

另外發現官網有個Ticket:JENKINS-40689 說目前不支援JDK9以上版本,截圖如下:

[Jenkins]JDK版本過高導緻的java.io.IOException: Remote call on xxxx failed

是以猜測替換JDK版本到JDK8就能解決此問題。

着手解決

檢視機器安裝的JDK版本

發現有JDK11和JDK8兩個版本,是以隻需要切換到JDK8就可以了

➜  Home pkgutil --pkgs | grep jdk 
com.oracle.jdk-11.0.1
com.oracle.jdk8u101      

切換JDK版本

切換到Jenkins支援的JDK8。為了友善以後使用,改成靈活修改JDK的方式,編輯~/.bash_profile

# 設定JDK8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
# 設定JDK11
export JAVA_11_HOME=`/usr/libexec/java_home -v 11.0`

# 設定預設JDK為8,重新開機電腦會自動選擇
export JAVA_HOME=$JAVA_8_HOME

#能夠友善的切換JDK
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk11="export JAVA_HOME=$JAVA_11_HOME"      

測試

# 輸入jdk11
➜  Home jdk11
# 檢視java版本
➜  Home java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
# 輸入jdk8
➜  Home jdk8
# 檢視java版本
➜  Home java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)      

再次啟動Jenkins

nohup java -jar slave.jar -jnlpUrl http://jenkins-url.com/computer/slave-macpro/slave-agent.jnlp -secret 63f9d5f0f1b5df887cbe72225d912a7ba253ef727c85aa143e3200e2ea54f278 >jenkinsslave.log &      

再次建構,成功!

cheers~~