从python访问JVM

时间:2015-08-17 08:17:34

标签: java python jvm boilerpipe

>>> 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() 它给出了与以前相同的错误。

4 个答案:

答案 0 :(得分:3)

请检查!

  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. 的权限
  6. 一切正常后,请尝试:import ctypes ctypes.CDLL('C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll')
  7. ***也许不能抛出一些java版本的钩子    我用jre-7u55-windows-i586.exe

    我希望对你有所帮助!最好的问候!

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

答案 1 :(得分:3)

回答是因为我没有足够的代表进行评论;尝试使用原始字符串而不是正常字符串,允许&#34; \ x&#34;逃脱。尝试:

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

因为&#34; \ ...&#34;字符串的一部分很可能是逃脱。

答案 2 :(得分:0)

以上答案还不够,还需要按照Bjorns answer安装Microsoft Visual C ++ 2010可再发行组件包(x86)。

安装C ++可再发行组件后:

  1. 将JAVA_HOME环境变量设置为(“ C:\ Program Files \ Java \ jre7”)
  2. 使用上述路径启动jvm:

    path_to_jvm =“ C:\ Program Files \ Java \ jre7 \ bin \ client \ jvm.dll”

    jpype.startJVM(path_to_jvm)

    jpype.startJVM(jpype.getDefaultJVMPath())

答案 3 :(得分:0)

如果要尝试在Windows操作系统上访问JVM,请确保已安装正确版本的JVM(32位或64位)。在我的情况下,python是64位的,一旦我安装Java 64位,它就可以工作,而无需指定路径或任何其他额外要求。