17
>>> 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

Tried: Reinstalling jvm

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

Edit: Tried code below, still stuck:

from py4j.java_gateway import JavaGateway gateway = JavaGateway() It gives the same error as before.

15
  • 1
    Loading the JVM from a DLL is very hard even from C. I suggest you load the JVM using java from the command line or use Jython which runs in the JVM already. Commented Aug 17, 2015 at 8:20
  • @PeterLawrey Thanks for comment! I am unaware of Jython. Should I just install it and run my python script again? Or there is more to it? Commented Aug 17, 2015 at 8:40
  • Jython runs Python scripts inside the JVM. I assume there is more to it but this is designed and supported to work with the JVM it is running in. Commented Aug 17, 2015 at 8:53
  • stackoverflow.com/questions/3652554/calling-java-from-python Commented Aug 17, 2015 at 9:48
  • 1
    @ρss Okay done, please check and help if possible. Thanks. Commented Aug 20, 2015 at 11:38

4 Answers 4

3
+25

Check Please !

  1. Give a true path ("C:\\Program Files\\Java\\jre7\\bin\client\\jvm.dll")
  2. Check all 32 or 64 bit (my offer always use 32bit Anaconda,JRE7,Python etc.)
  3. Install pywin32 (of course python2.7.9)
  4. Give permission to jvm.dll(can run)
  5. After all is ok, try: import ctypes ctypes.CDLL('C:\\Program Files\\Java\\jre7\\bin\\client\\jvm.dll')

***Maybe can't throw the hook of some java versions i used jre-7u55-windows-i586.exe

i hope helpful ! Best regards !

Works on wine(no bug): enter image description here

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks! I get this error unforunately. >>> ctypes.CDLL('C:\Program Files (x86)\Java\jre1.8.0_40\bin\client\jvm.dll') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Anaconda\lib\ctypes\__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) WindowsError: [Error 126] The specified module could not be found
How does one give permission to the dll to "can run"? We are searching the web but the keywords are so generic we are not finding good answers.
Depends on the operating system version. Some application extensions only require access (sometimes the right to access and/or user and/or user group and/or access class and/or service point etc.).
3

Answering because I don't have enough rep for commenting; Try using raw strings instead of the normal ones allowing "\x" escapes. Try:

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

Because the "\..." parts of the string could very well be escapes.

Comments

2

The answers above are not sufficient, one also needs to install the Microsoft Visual C++ 2010 Redistributable Package (x86) as per Bjorns answer.

After installed the C++ redistributable:

  1. Set JAVA_HOME environment variable to ("C:\Program Files\Java\jre7")
  2. Use paths as mentioned above to start jvm:

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

    jpype.startJVM(path_to_jvm)

    jpype.startJVM(jpype.getDefaultJVMPath())

Comments

1

If you are trying to access JVM on Windows operation system, make sure you have the right version of JVM (32-bit or 64-bit) installed. In my case python was 64-bit and once I installed Java 64-bit, it worked without needing to specify the path or any other extra requirements.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.