關於提示unrecognized class file version的原因

今天在發佈一個網站的時候,發現用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'

問題完美解決!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章