从 python 访问 JVM

2022-09-03 07:49:20
>>> import boilerpipe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Anaconda\lib\site-packages\boilerpipe\__init__.py", line 10, in <module>
    jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % os.pathsep.join(jars))
  File "C:\Anaconda\lib\site-packages\jpype\_core.py", line 50, in startJVM
    _jpype.startup(jvm, tuple(args), True)
RuntimeError: Unable to load DLL [C:\Program Files\Java\jre7\bin\client\jvm.dll], error = The specified module could not be found.
 at native\common\include\jp_platform_win32.h:58

已尝试:重新安装 jvm

>> import ctypes
>> import os
>> os.chdir(r"<path to Java bin client folder>")
>> ctypes.CDLL("jvm.dll")
Still unable to fix

编辑:在下面尝试了代码,仍然卡住:

from py4j.java_gateway import JavaGateway gateway = JavaGateway()它给出了与以前相同的错误。


答案 1

请检查请!

  1. 给出一个真实的路径("C:\\Program Files\\Java\\jre7\\bin\client\\jvm.dll")
  2. 检查所有32或64位(我的报价始终使用32位Anaconda,JRE7,Python等)
  3. 安装pywin32(当然是python2.7.9)
  4. 授予权限(可以运行)jvm.dll
  5. 毕竟还可以,试试:import ctypes ctypes.CDLL('C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll')

也许不能扔掉我使用的一些Java版本的钩子jre-7u55-windows-i586.exe

我希望有帮助!此致敬意!

适用于葡萄酒(无错误):enter image description here


答案 2

回答,因为我没有足够的代表来评论;尝试使用原始字符串,而不是允许“\x”转义的普通字符串。尝试:

>>> ctypes.CDLL(r'C:\Program Files (x86)\Java\jre1.8.0_40\bin\client\jvm.dll')

因为“\...”字符串的某些部分很可能是转义。