今天在使用jenkins進(jìn)行部署的時(shí)候,遇到了兩個(gè)問(wèn)題,已解決,特此記錄。
問(wèn)題一:
遠(yuǎn)程啟動(dòng)tomcat,tomcat已經(jīng)啟動(dòng),但是服務(wù)訪問(wèn)失敗,檢查catalina.out也可以明顯看到這一點(diǎn)。
登陸遠(yuǎn)程服務(wù)器,執(zhí)行xx/tomcat/bin/startup.sh啟動(dòng)成功。
啟動(dòng)命令完全一致;
解決思路:
? ? 遠(yuǎn)程啟動(dòng)tomcat后,使用ps -ef|grep tomcat 拿到進(jìn)程的完整啟動(dòng)命令。
? ? 本地啟動(dòng)tomcat后,使用ps -ef|grep tomcat 拿到進(jìn)程的完整啟動(dòng)命令。
? ? 兩個(gè)命令對(duì)比,會(huì)發(fā)現(xiàn)使用的jdk不一致,其他的完全一致。
? ? 遠(yuǎn)程啟動(dòng)的啟動(dòng)命令中的jdk路徑:/usr/bin/java ,執(zhí)行 /usr/bin/java -version 拿到遠(yuǎn)程啟動(dòng)命令的版本,可以再次清晰看到兩者不一致。
? ? 遠(yuǎn)程服務(wù)器上執(zhí)行 java -version,得到的版本號(hào)與本地啟動(dòng)命令中的版本號(hào)一致。
最終,知道,所有的一切是因?yàn)閖dk版本不一致導(dǎo)致的,聯(lián)系運(yùn)維解決服務(wù)器的環(huán)境問(wèn)題。
問(wèn)題二:
遠(yuǎn)程啟動(dòng)jar,啟動(dòng)命令:cd xx; nohup java -jar xx.jar? ? > /dev/null 2>&1 & 執(zhí)行后,在遠(yuǎn)程服務(wù)器使用ps -ef|grep java xx.jar查不到進(jìn)程;
本地啟動(dòng):nohup java -jar xx.jar > /dev/null 2>&1 & 啟動(dòng)后,使用ps -ef|grep xx.jar可以看到對(duì)應(yīng)進(jìn)程;
解決思路:
? ? 此時(shí)遠(yuǎn)程啟動(dòng)沒有任何日志,只能知道是沒有啟動(dòng)。
? ? 調(diào)整啟動(dòng)命令為:nohup java -jar xx.jar > xx.out 2>&1 &, 此時(shí)能夠看到xx.out中的報(bào)錯(cuò)信息為:
? ? ? ? Exception in thread "main" java.lang.unsupportedClassversionError: xx/MainApplication: Unsupported major.minor version 52.0
? ? ? ? ? ? at java.lang.ClassLoader.defineClass1(Native Method)
? ? ? ? ? ? at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
? ? ? ? ? ? ......
這個(gè)錯(cuò)誤一般是值指ar包的打包的jdk版本和啟動(dòng)的jdk版本不一致。
遠(yuǎn)程服務(wù)器本地執(zhí)行:java -version,版本為1.8
遠(yuǎn)程命令執(zhí)行:ssh xx@xx.xx.xx.xx java -version,得到的版本為1.7,
此時(shí)就可以很清楚的知道是環(huán)境問(wèn)題導(dǎo)致的兩個(gè)版本不一致,從而導(dǎo)致遠(yuǎn)程啟動(dòng)問(wèn)題。