Mac OS X下使用JPype启动JVM提示文件不存在但实际存在的问题求助
问题:Mac下JPype1启动JVM提示指定文件找不到
问题场景
在Mac OS X 13.2.1系统下,使用Python 3.10.4及JPype1 1.4.1尝试启动JVM,手动指定JVM路径为/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib,运行代码时提示该文件不存在。
代码片段
import jpype jvm_path = "/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib" jpype.startJVM( jvm_path, classpath=['~/org.alloytools.alloy.dist.jar'], )
错误信息
Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/Users/<username>/research-llm/alloy-bridge/src/__main__.py", line 5, in <module> jpype.startJVM( File "/Users/<username>/research-llm/alloy-bridge/.env/lib/python3.10/site-packages/jpype/_core.py", line 224, in startJVM _jpype.startup(jvmpath, tuple(args), FileNotFoundError: [Errno 2] JVM DLL not found: /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib
环境诊断信息
java -version openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment Microsoft-25199 (build 11.0.12+7) OpenJDK 64-Bit Server VM Microsoft-25199 (build 11.0.12+7, mixed mode) javac -version javac 11.0.12 python --version Python 3.10.4 pip show jpype1 Name: JPype1 Version: 1.4.1 Summary: A Python to Java bridge. Home-page: https://github.com/jpype-project/jpype Author: Steve Menard Author-email: devilwolf@users.sourceforge.net License: License :: OSI Approved :: Apache Software License Location: /Users/username/projects/alloy-bridge/.env/lib/python3.10/site-packages Requires: packaging Required-by: sw_vers ProductName: macOS ProductVersion: 13.2.1 BuildVersion: 22D68
解决方向
- 验证指定路径的文件是否存在:在终端执行
ls /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/jli/libjli.dylib,若返回文件不存在,说明路径错误。 - 替换为正确的JVM动态库路径:Mac上OpenJDK 11的标准JVM库路径为
/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/lib/server/libjvm.dylib,将代码中的jvm_path替换为此路径重试。 - 让JPype自动探测JVM路径:删除手动指定的jvm_path参数,直接调用
jpype.startJVM(classpath=['/Users/<username>/org.alloytools.alloy.dist.jar']),JPype会自动查找系统默认JDK。 - 修正classpath路径:代码中
~/org.alloytools.alloy.dist.jar的波浪号不会被JPype解析,替换为绝对路径(如/Users/<username>/org.alloytools.alloy.dist.jar)。 - 确认架构一致性:确保Python和JDK都是64位(当前环境已满足,可快速排除此问题)。
内容的提问来源于stack exchange,提问作者Rodrigo Stv
相关产品推荐
相关产品推荐

