gpt4 book ai didi

java - R 寻找错误的 Java 版本

转载 作者:可可西里 更新时间:2023-11-01 14:47:10 26 4
gpt4 key购买 nike

我安装/卸载了 java jre/jdk 很多次,最后安装了旧版本 1.6.0_17,它现在​​位于“C:\Program Files\Java\jre6\bin”。毕竟,如果我在 R 中调用“java -version”,我可以看到 R 正在旧路径上寻找 Java,但现在这是错误的。问题是:即使 Windows 路径设置正确,为什么 R 在错误的路径中寻找 Java?据我所知,windows 路径中没有双重条目,从那时起我重新启动了 R 和 Windows 一次。任何 R 走错路的想法?

在 Windows 外壳上:

> set
[..]
OS=Windows_NT
Path=C:\Program Files\Java\jre6\bin;
[..]


> java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

在 R 中:

> system("java -version")
Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.cfg'

最佳答案

你的问题取决于 64/32 位版本。
您运行 32 位 R,它使用 32 位命令提示符并找到 32 位 java。如果您使用 64 位 R,那么它会运行 64 位命令提示符和正确的 java。

您可以通过运行 32 位命令 promt(在 this post 之后)来检查它:

  1. 点击开始。
  2. 在“开始搜索”框中键入 %windir%\SysWoW64\cmd.exe
  3. 按回车键。
  4. 输入java -version

在我的系统中它失败了,因为我没有 32 位 java。使用标准的 cmd.exe,我得到了正确的路径。

对于可能的解决方案,有两种方法。安装 32 位 R 和 32 位 Java 或 64 位 R(即 officially supported from 2.11 version )和 64 位 Java。在我的系统(64 位 Windows 7)上我有两套,所以在 32 位组合上我得到:

> system("java -version")
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

在 64 位上:

> system("java -version")
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)

在 64 位版本上,您可以使用 32 位 cmd 调用 32 位 Java:

shell(
"java -version",
shell = file.path(Sys.getenv("windir"),"SysWoW64/cmd.exe")
)
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

关于 Shane 的评论,我认为问题是 R 如何获得 32 位 cmd 的路径。因为我找不到在 32 位 R 上调用 64 位 cmd 的方法。

关于java - R 寻找错误的 Java 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com