linux 報錯 jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class not found

phoenix發表於2020-04-26


目的:記錄這個坑
問題:如圖jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class XXX not found
描述:此程式碼在windows環境正常執行,但是移植到linux平臺就報錯
問題解決過程:
1)windows執行正常,基本可以排除程式碼問題,確定是環境問題
2)檢查java、python、linux、jpype的版本,及位數——OK
3)確定jvmpath、jarpath無誤
4)採納網上結論,設定java環境變數時,直接export匯入,並且設定CLASSPATH——無效(我本來就是這麼設定的~~)
JAVA_HOME=/usr/java/jdk1.8.0_251
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
5)根據這位兄弟的結論,開始懷疑“linux中jpype載入多個JAR包時存在BUG”——解決問題
結論:linux中jpype載入多個JAR包時存在BUG,可以合併JAR包
mkdir tmp
cd tmp
jar -xf ../jar1.jar
jar -xf ../jar2.jar
cd ..
jar -cvf test.jar -C tmp .

最後:附上原大佬連結
https://www.v2ex.com/t/215920

相關文章