Доступ к JVM из 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() Он дает ту же ошибку, что и раньше.

Ответ 1

Проверьте, пожалуйста!

  • Дайте истинный путь ("C:\\Program Files\\Java\\jre7\\bin\client\\jvm.dll")
  • Проверьте все 32 или 64 бит (в моем предложении всегда используются 32-битные Anaconda, JRE7, Python и т.д.).
  • Установить pywin32 (конечно, python2.7.9)
  • Разрешить jvm.dll (может работать)
  • В конце концов, попробуйте: import ctypes ctypes.CDLL('C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll')

*** Может быть, не может бросить кусок некоторых версий Java  Я использовал jre-7u55-windows-i586.exe

Надеюсь, полезно! С наилучшими пожеланиями!

Работает над вином (без ошибок): введите описание изображения здесь

Ответ 2

Ответ, потому что у меня недостаточно комментариев для комментариев; Попробуйте использовать необработанные строки вместо обычных, позволяя "\ x" экранировать. Попробуйте:

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

Потому что части "\..." строки могут быть очень удачными.

Ответ 3

Приведенных выше ответов недостаточно, также необходимо установить распространяемый пакет 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())

Ответ 4

Если вы пытаетесь получить доступ к JVM в операционной системе Windows, убедитесь, что у вас установлена правильная версия JVM (32-разрядная или 64-разрядная). В моем случае python был 64-битным, и как только я установил Java 64-битный, он работал без необходимости указывать путь или какие-либо другие дополнительные требования.