从python访问JVM

2024-05-15 17:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: toinpyimportoslibpackagesline
3条回答

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

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

因为字符串的“\…”部分很可能会被转义。

以上的答案是不够的,还需要安装微软Visual C++ 2010可重分发包(x86),每个BJORNS ^ {A1}。

<>安装C++重新分配后:

  1. 将JAVA_HOME环境变量设置为(“C:\程序文件\JAVA\jre7”)
  2. 使用上述路径启动jvm:

    path_to_jvm=“C:\程序文件\Java\jre7\bin\client\jvm.dll”

    jpype.startJVM(到jvm的路径)

    jpype.startJVM(jpype.getDefaultJVMPath())

请检查一下!

  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 ctypesctypes.CDLL('C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll')

***也许不能抛出一些java版本的钩子 我用了jre-7u55-windows-i586.exe

希望有帮助!谨致问候!

对葡萄酒有效(无缺陷): enter image description here

相关问题 更多 >