问题描述
项目里使用了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即可。
Comments | NOTHING