无法在 Octave 中使用 Java

Unable to use Java in Octave

我在 Windows 10 上使用 Octave 4.2.1。当我在 Octave 控制台中键入时:

>> __have_feature__ JAVA
ans = 1

因此 java 已启用。在 Windows 上使用命令提示符,我发现我有 java 版本“1.1.0_71”。所以 java 存在并且 运行。 但是当我尝试在 Octave 中调用 java 函数时,我得到:

cp = javaclasspath
error: unable to find Java Runtime Environment: software\javasoft\java runtime environment::Currentversion

当我输入 'java -version':

>> java -version
error: 'java' undefined near line 1 column 1

我检查了 java 的环境变量:

>> getenv JAVA_HOME
ans = C:\Program Files\Java\jdk1.7.0_71

同样,这看起来不错。最后我什至尝试从头开始安装 Octave,但这并没有解决问题。我的猜测是它与 'software\javasoft\java runtime environment::CurrentVersion' 有关,但我无法弄清楚它是什么。

这可能与 Octave 和 JRE 的位数不同有关。 This post raises 同样的问题。通过使 Octave 位数与 JRE 位数一致来解决这个问题。确保您的 Octave 安装是 64 位的。

还值得检查一下是否指定了以下变量:

我假设您 运行 64 位版本的 Octave 并且您拥有 JDK 11.0.5

的 64 位版本

在文件octave.vbs行后写

Set wshShell = CreateObject( "WScript.Shell" )

wshShell.Environment("SYSTEM")("JAVA_HOME") = "c:\program files\java\jdk-11.0.5"

然后将以下注册表行与您的注册表合并

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
"CurrentVersion"="11.0.5"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment.0.5]
"JavaHome"="C:\Program Files\Java\jdk-11.0.5"
"RuntimeLib"="C:\Program Files\Java\jdk-11.0.5\bin\client\jvm.dll"

*** 编辑:上面的代码适用于 Windows 7。如果您 运行 Windows 10,请将 "client" 更改为 "server":

    "RuntimeLib"="C:\Program Files\Java\jdk-11.0.5\bin\server\jvm.dll"