java - JPy 与 Java 10

标签 java python java-10 jpype

有人知道 JPype 是否可以与 Java 10 JRE 一起使用吗?
我已经使用 Java 8 测试了 JPype,没有任何问题,但我无法将它与 Java 10 结合使用。

我的测试设置:

  • Windows 10 64 位
  • Python 3.5.2(Anaconda 4.2.0)64 位
  • Spyder 3.3.0
  • JPype 0.6.3(通过pip install)

我在 Spyder 中执行 Python 测试脚本(包含在 Anaconda 包中)。

使用 Java 8 (jre1.8.0_181) 测试成功。
JPype JVM 启动没有任何问题。

使用 Java 10 (jre-10.0.2) 进行测试失败并出现以下错误:

RuntimeError: Unable to load DLL [C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll], error = Das angegebene Modul wurde nicht gefunden.
 at native\common\include\jp_platform_win32.h:58

我有德语 Windows 版本,因此“Das angegebene Modul wurde nicht gefunden”部分可能会翻译为“找不到指定的模块”。

我使用了这个Python代码,在JPype中启动JVM:

import jpype

java_path = "C:\\Program Files\\Java\\jre-10.0.2\\bin\\server\\jvm.dll"
jpype.startJVM(java_path, '-ea')

编辑:添加整个测试脚本

import jpype
import os

java_path = "C:\\Program Files\\Java\\jre-10.0.2\\bin\\server\\jvm.dll"
# java_path = "C:\\Program Files\\Java\\jre1.8.0_181\\bin\\server\\jvm.dll"

# print exists result to be sure the file exists
print(os.path.exists(java_path))

jpype.startJVM(java_path, '-ea')

print("it works")

如果我使用 Java 10 部分,它不起作用,但如果我使用 Java 8 部分(当前已注释),它确实起作用。
第一个 print 命令在两种情况下都会打印 True

提前谢谢您,
马库斯

最佳答案

我使用的是 JDK 10.0.2,jpype 0.6.3 工作正常。正如 jpype documentation 中提到的,安装程序会在 JAVA_HOME 系统变量中提到的路径中查找 JVM。

>>> from jpype import *
>>> getDefaultJVMPath()
'C:\\Program Files\\Java\\jdk-10.0.2\\bin\\server\\jvm.dll'

我的 JAVA_HOME 指向“C:\Program Files\Java\jdk-10.0.2”,这就是为什么它是 recommended in using-jpype你以这种方式启动 JVM -

startJVM(getDefaultJVMPath(), "-ea")

关于java - JPy 与 Java 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505655/

相关文章:

从批处理文件运行时,Java Jar 文件不发送电子邮件?

java - 使用 XML 配置在 Spring 中为 Jackson 启用 DEFAULT_VIEW_INCLUSION 功能

python - 将元组附加到列表

python - 错误是在python中使用opencv

Java 10 NumberFormat 无法解析指数格式的 double

java - 获取幸运号码

java - 两个 onClickListener。无法启动程序

python - 从数据中删除序列 Pandas Python Numpy

java - Travis 构建支持 JavaFx 的 OpenJDK10

java - 本地类型推断与实例