今天在發佈一個網站的時候,發現用java - jar 可以運行jar包,但是運行到一半會卡住如下圖所示
但是我在idea裏卻可以完美的運行,於是我去查了一下資料,然後改了幾個配置,最後發現還是沒有用。
但是我發現了一個問題,當我用sudo java -jar的時候顯示 Exception in thread "main" java.lang.ClassFormatError: SystemInfo (unrecognized class file version)(這個問題的原因,根據網上的回答應該是jdk版本過低,只需要更新jdk就ok了)
而當我不用管理員權限的時候依舊可以運行jar包但是卻不能運行成功。這時候我想到了解決的辦法,重裝jdk,於是我花了半個小時重裝了1.8版本的jdk(注:之前也是1.8),配置完環境變量之後我就就可以使用java -jar運行jar包了,但是用管理員權限的時候還是顯示jdk版本過低,這時候可以用命令 sudo java -version查看自己jdk的版本。
於是我又去查資料,終於找到了原因
通過sudo執行命令,讀的環境變量路徑和其他用戶讀的環境變量是不一樣的:
解決:
vi /etc/sudoers
# 把路徑加入java路徑
test ALL=(ALL:ALL) ALL
Defaults secure_path="/usr/local/sbin:/usr/java/jdk1.8.0_80/bin"
(:/usr/java/jdk1.8.0_80/bin是新增的,這是你安裝的jdk的路徑,注意改成你自己的路徑)
用這個方法似乎還是沒有解決我的問題,可能是我臉太黑的原因。
另一個解決辦法是
在環境配置文件里加一個alias
alias sudo='sudo env PATH=$PATH'
問題完美解決!!!