【问题标题】:javabridge.jutil.JVMNotFoundError: Can't find the Java Virtual Machinejavabridge.jutil.JVMNotFoundError:找不到Java虚拟机
【发布时间】:2019-08-08 20:19:53
【问题描述】:

我想在我的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 运行时环境 (build 1.8.0_201-b09) Java HotSpot(TM) 64 位服务器 VM(内部版本 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

【问题讨论】:

  • 您是否安装了 64 位版本的 Python 2.7?请参阅this post,了解如何确定 Python shell 的位数。
  • 我的 Python shell 是 64 位 (2.7.16.amd64.msi) 我在 forum.image.sc/t/error-when-trying-to-open-cellprofiler-analyst/… 中找到了指南,但我不明白最终的解决方案。我使用的是 Windows 10,它可能与我的 Windows 有关吗?
  • 你设置了JAVA_HOME环境变量了吗?
  • 是的,对于用户变量和系统变量 --> JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181\bin 和 JAVA_HOME= C:\Program Files\Java\jre1.8.0 _181\bin –
  • 在设置 JAVA_HOME 时省略 bin 目录。将其设置为:JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181。设置路径时使用bin目录

标签: java python weka


【解决方案1】:

我不是 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)
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()

【讨论】:

  • 非常感谢您的帮助。我做了上面的步骤,我用了py27-pww(看来PATH相关的问题已经解决了)。
  • >>> jvm.start() DEBUG:weka.core.jvm:Adding bundled jars DEBUG:weka.core.jvm:Classpath=['C....'] DEBUG:weka. core.jvm:MaxHeapSize=default DEBUG:weka.core.jvm:Package support disabled
  • >>> from weka.classifiers import Classifeir ..../usr/share/java/weka.jar:/usr/share/java/libsvm.jar 未找到。确保文件已安装或更新环境的 WEKA_JAR_PATH 以仅包含有效位置。
  • 阅读 pww 中 how to start the JVM with package support(默认关闭)和 how to handle packages 的文档。
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2011-08-19
  • 2019-11-29
  • 2013-04-03
  • 2015-07-10
  • 2014-08-04
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多