JPype无法正确编译

2 投票
2 回答
4120 浏览
提问于 2025-04-17 16:47

我在用JPype编译一个非常简单的Python脚本时遇到了麻烦。

我的代码是这样的:

from jpype import *
startJVM(getDefaultJVMPath(), "-ea")
java.lang.System.out.println("hello world")
shutdownJVM()

但是当我运行它的时候,出现了一个错误提示:

Traceback (most recent call last):   File "test.py", line 2, in
<module>
    startJVM(getDefaultJVMPath(), "-ea")   File "/usr/lib/pymodules/python2.7/jpype/_core.py", line 44, in startJVM
    _jpype.startup(jvm, tuple(args), True) RuntimeError: Unable to load DLL [/usr/java/jre1.5.0_05/lib/i386/client/libjvm.so], error =
/usr/java/jre1.5.0_05/lib/i386/client/libjvm.so: cannot open shared
object file: No such file or directory at
src/native/common/include/jp_platform_linux.h:45

我现在卡住了,真的需要帮助。谢谢!

2 个回答

1

解决这个问题的方法是直接在调用JVM时定义完整的路径:

from jpype import *
startJVM('/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/MacOS/libjli.dylib', "-ea", "-Djava.class.path=/tmp/Jpype/sample")
java.lang.System.out.println("Hello World!!")
shutdownJVM()

原文内容:

在MacOS El Capitan上运行JPype时遇到了类似的问题。我无法弄清楚如何让_darwin.py代码找到正确的JVM位置,尽管JAVA_HOME这个系统变量已经设置得很好。

注意事项,在Spyder的IPython控制台中运行上述代码没有任何输出,但在普通控制台中可以看到输出。

1

我也遇到过同样的问题。

RuntimeError: Unable to load DLL [/usr/java/jre1.5.0_05/lib/i386/client/libjvm.so], error = /usr/java/jre1.5.0_05/lib/i386/client/libjvm.so: cannot open shared object file: No such file or directory at src/native/common/include/jp_platform_linux.h:45

在我的情况下,JAVA_HOME的路径设置错了。

/profile/etc

export JAVA_HOME
JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
PATH="$JAVA_HOME/bin:$PATH"
export PATH

撰写回答