java - javabridge.jutil.JVMNotFoundError:找不到Java虚拟机
问题描述
我想在我的python代码中使用Weka,所以我根据https://fracpete.github.io/python-weka-wrapper/install.html安装了java-wrapper python(2.7.16) ,我的java版本是:java版本 "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, 混合模式)
另外,我根据https://troubleshooter.xyz/wiki/fix-java-virtual-machine-jvm-not-found-error/将 JDK 路径添加到用户变量 PATH
但它会引发错误:
>>>import os
>>>import traceback
>>>import weka.core.jvm as jvm
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\weka\core\jvm.py", line 17, in
<module>
import javabridge
File "C:\Python27\lib\site-packages\javabridge\__init__.py", line 38, in
<module>
from .jutil import start_vm, kill_vm, vm, activate_awt, deactivate_awt
File "C:\Python27\lib\site-packages\javabridge\jutil.py", line 151, in
<module>
os.pathsep + os.path.join(find_javahome(), "bin")
File "C:\Python27\lib\site-packages\javabridge\jutil.py", line 139, in
_find_jvm
raise JVMNotFoundError()
javabridge.jutil.JVMNotFoundError: Can't find the Java Virtual Machine
解决方案
我不是 Windows 用户,设置 Python 似乎总是充满问题......但我终于有时间设置 Windows 10 实例......这是我所做的:
- 没有
JAVA_HOME
定义变量 - java可执行文件的位置:
where java
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\ProgramData\Oracle\Java\javapath\java.exe
- 安装的Java版本:
java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
用于 Python 2.7 的 VC++ 编译器(用于编译 javabridge)
适用于 Python 2.7 (4.3.0.1) 的 Anaconda
https://repo.continuum.io/archive/Anaconda2-4.3.0.1-Windows-x86_64.exe
安装anaconda后PATH的值:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Anaconda2;C:\Anaconda2\Scripts;C:\Anaconda2\Library\bin;C:\Users\fracpete\AppData\Local\Microsoft\WindowsApps;
- 为pww创建anaconda环境(numpy需要通过anaconda安装):
conda create -n py27-pww numpy
- 激活环境:
activate py27-pww
- 安装密码:
pip install python-weka-wrapper
- 测试密码:
python
import weka.core.jvm as jvm
jvm.start()
from weka.classifiers import Classifeir
cls = Classifier(classname="weka.classifiers.trees.J48")
print(cls)
jvm.stop()
推荐阅读
- javascript - 使用图像标签通过“onclick”传递函数
- java - 生成 AES 和 RS256 密钥
- flutter - 由于 navigator.pop 阻止底部工作表关闭
- python - 将下拉过滤器添加到 Plotly Express 图表
- spring-boot - 在成功或失败输出的情况下,REST API 中客户端的自定义响应
- blazor - 具有多个命名参数的 Blazor HTTPRequestMessage
- python - 如何在 plotly 中绘制 3D 表面上的边缘线?
- c++ - 为什么在类成员函数 C++ 中使用关键字“const”两次
- r - 如何有效地在(稀疏)矩阵中插入行?
- ruby-on-rails - RAILS 6.1 支持 ACTIVE STORAGE 中的多个 has_one_attached?