python通过jpype调用jvm报错[WinError 126] JVM DLL not found


问题描述

项目里使用了jpype来调用java做一些操作。切换系统后发现怎么都调用不起来。

Traceback (most recent call last):
  File "E:\programme\javascript\kettle-manager\kettle-server\app.py", line 4, in <module>
    run()
  File "E:\programme\javascript\kettle-manager\kettle-server\core.py", line 12, in run
    PDI().initEx("AwPan","AwKitchen")
  File "E:\programme\javascript\kettle-manager\kettle-server\module\PDI\PDI.py", line 13, in __init__
    jpype.startJVM(jvm_config["JVM_path"],jvm_config["encoding"],"-ea",Djava)
  File "E:\programme\javascript\kettle-manager\kettle-server\venv\lib\site-packages\jpype\_core.py", line 298, in startJVM
    _jpype.startup(jvmpath, jvmargs + tuple(extra_jvm_args),
OSError: [WinError 126] JVM DLL not found: D:/software/java/jdk8/jdk180_431/jre/bin/server/jvm.dll

原因

检查和查阅一些资料后发现,jvm的版本架构(如arm,x86,32bit,64bit)如果与python的架构不同,也会导致无法调用。
而切换后的设备python为64bit,java为32bit。

解决办法

重装java或python对齐架构。或者另外下载jvm的文件。jpype重新指向调用的jvm.dll即可。

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - python通过jpype调用jvm报错[WinError 126] JVM DLL not found


欢迎来到我的小屋