无法在 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"
我在 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"