Accessing JVM from python
Check Please !
- Give a true path (
"C:\\Program Files\\Java\\jre7\\bin\client\\jvm.dll"
) - Check all 32 or 64 bit (my offer always use 32bit Anaconda,JRE7,Python etc.)
- Install pywin32 (of course python2.7.9)
- Give permission to
jvm.dll
(can run) - 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):
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.
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:
- Set JAVA_HOME environment variable to ("C:\Program Files\Java\jre7")
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())