【问题标题】:Unable to use Java in Octave无法在 Octave 中使用 Java
【发布时间】:2018-01-08 05:43:06
【问题描述】:

我在 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 运行时环境::CurrentVersion”有关,但我无法弄清楚它是什么。

【问题讨论】:

    标签: java octave


    【解决方案1】:

    我假设您运行 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"
    

    *** 编辑:以上代码适用于 Windows 7。如果您运行 Windows 10,请将“客户端”更改为“服务器”:

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

    【讨论】:

    • 我遵循了您的解决方案,但仍然收到相同的“错误:'java' undefined near line 1 column 1”。有什么想法吗?
    • @Starhowl,如果您运行 Windows 10,请将“客户端”更改为“服务器”(已编辑解决方案)
    • 这适用于最新的JDK 13.0.2,非常感谢!
    【解决方案2】:

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

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

    【讨论】:

    • @CeesMeijer 这似乎是 Windows 注册表项的问题。检查键 [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 是否包含正确的路径
    • @CeesMeijer 因为我没有任何问题,我认为您可以将我的设置作为参考设置。我有一个以 java 版本命名的文件夹及其下的以下变量: JavaHome="C:\Program Files\Java\jre1.8.0_144", RuntimeLib="C:\Program Files\Java\jre1.8.0_144\bin \client\jvm.dll”。还要确保使用 Octave 和 Java 的相同“位数”。例如你没有 32 位 Octave 和 64 位 java。
    • 我检查过,我的注册表中有相同的设置。这也意味着我的 JAVA_HOME 环境变量被设置为不同的文件夹(版本 1.7)。我更正了,但不幸的是它并没有解决问题。
    • @CeesMeijer 我已经更新了答案,并参考了提出类似问题的论坛帖子。尝试对齐 Octave 和 JRE 的位数。由于您的 JRE 在“程序文件”中,因此它很可能是 64 位的。确保您使用的是 Octave 64 位。
    • @CeesMeijer 顺便说一句,您还应该更新您的 PATH 变量。
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多