目的:记录这个坑
问题:如图 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