无法在八度音阶中使用Java

无法在八度音阶中使用Java,java,octave,Java,Octave,我在Windows10上使用的是Octave 4.2.1。当我在倍频程控制台中键入时: >> __have_feature__ JAVA ans = 1 因此启用了java。在Windows上使用命令提示符,我发现我有java版本“1.1.0_71”。因此java已经存在并正在运行。 但当我尝试调用八度的java函数时,我得到: cp = javaclasspath error: unable to find Java Runtime Environment: software\j

我在Windows10上使用的是Octave 4.2.1。当我在倍频程控制台中键入时:

>> __have_feature__ JAVA
ans = 1
因此启用了java。在Windows上使用命令提示符,我发现我有java版本“1.1.0_71”。因此java已经存在并正在运行。 但当我尝试调用八度的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”有关,但我不知道它是什么。

这可能与倍频程和JRE的比特数不同有关。同样的问题。通过将八度音阶的比特度与JRE比特度对齐,解决了这个问题。确保您的倍频程安装为64位

还需要检查是否指定了以下变量:

我想您运行的是64位版本的Octave,您拥有的是64位版本的JDK 11.0.5

在文件
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\11.0.5]
"JavaHome"="C:\\Program Files\\Java\\jdk-11.0.5"
"RuntimeLib"="C:\\Program Files\\Java\\jdk-11.0.5\\bin\\client\\jvm.dll"
***编辑:上面的代码是针对Windows7的。如果运行Windows 10,请将“客户端”更改为“服务器”:


@CeesMeijer这似乎是windows注册表项的问题。检查键[HKEY\U LOCAL\U MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]是否持有正确的密码paths@CeesMeijer因为我没有问题,我想你可以依赖我的设置作为参考。我有一个以java版本命名的文件夹,下面有以下变量:JavaHome=“C:\Program Files\java\jre1.8.0\u 144”,RuntimeLib=“C:\Program Files\java\jre1.8.0\u 144\bin\client\jvm.dll”。还要确保您使用的八度音阶和Java的“比特度”相同。e、 你没有32位八度和64位java。我检查过了,我的注册表中有相同的设置。这也意味着我的JAVA_HOME环境变量被设置为不同的文件夹(版本为1.7)。我纠正了这个问题,但不幸的是,它并没有解决问题。@CeesMeijer我已经更新了答案,并引用了提出类似问题的论坛帖子。尝试将八度音阶和JRE的位对齐。因为您的JRE位于“程序文件”中,所以它很可能是64位的。请确保您使用的是64位八度音程。@CeesMeijer顺便说一句,您还应该更新PATH变量。我遵循了您的解决方案,但仍然得到相同的“错误:在第1行第1列附近未定义java”。有什么想法吗?@Starhowl,如果您运行Windows 10,请将“客户端”更改为“服务器”(解决方案已编辑)。这适用于最新的JDK 13.0.2,非常感谢!
    "RuntimeLib"="C:\\Program Files\\Java\\jdk-11.0.5\\bin\\server\\jvm.dll"