【问题标题】:Cannot make R-extension work in NetLogo无法使 R-extension 在 NetLogo 中工作
【发布时间】:2016-01-25 13:06:12
【问题描述】:

我意识到这并不是一个真正的编程问题,但我希望这里一位经验丰富的 NetLogo 人员能够看到我做错了什么,尤其是你们中的许多人使用 Java 工作而我没有。

我正在尝试连接 R 扩展,以便我可以使用 R 库来做一些棘手的网络工作。我使用的是 Windows 7。详细的安装说明描述了三个必须设置的系统变量。我已经这样做了,并从命令提示符处回显它们,R_HOME 和 JRI_HOME 连接到似乎是适当的目录,并且我的 PATH 包括 R bin。

安装说明的第 4 步从命令行打开一个 R 终端,并且工作正常。同样,从该终端加载 rJava 库(即步骤 6,输入 library(rJava))会返回相应的消息。检查 java 版本(第 9 步)返回适当的 64 位响应,与文档中的完全相同,只是我的 vm 版本更新。

一起测试(第 12 步)打开 NetLogo,我输入 extensions [r],但勾选勾号立即将其关闭。根据文档,这是 R_HOME 和 PATH 的错误,但我看不到它。在命令行中,我收到一个错误Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.library.path,然后是许多 java 错误。

是否有我忘记设置的环境变量?即使文档中没有描述,我是否需要向 java.library.path 添加一些内容?

更新

经过进一步调查,r 扩展附带了一个名为 rsystemcheck 的扩展。安装那个[注意其他有这个问题的人,只需将文件夹移动到扩展文件夹中],看来我的电脑(至少)安装了两个版本的 Java。这并不奇怪,因为 Java 更新过程并没有真正清理干净,而且许多程序安装了额外版本的运行时。

“检查 java”工具报告说我安装了 v1.8.0_51 和 v1.6.0_45,如果一个是 32 位,另一个是 64 位,那么 R 扩展将不起作用。

在我的文件系统中到处乱逛 - v1.8.0_51 绝对是 32 位的。我还安装了 v1.7.0 64 位(一个新的!)。我直接找不到v1.6.0_45,但我认为这是NetLogo安装的jre文件夹中的版本。

此外,尝试在没有 VM 的情况下安装 NetLogo 并指向我的 JRE 不起作用,因为 NetLogo 要求 JRE 为 32 位。此外,卸载java并替换为32位版本不起作用,因为我使用的是64位R。

【问题讨论】:

  • JenB,我认为您是这里经验丰富的 NetLogo 人之一!如果您没有得到答案,netlogo-devel Google 小组可能是合适的,尽管我知道这不是一个开发问题。
  • 我很少使用 Windows。会不会是文件权限问题,或者类似的问题?
  • 感谢火星。不应该是文件权限问题,我希望这是一个不同的错误消息(类似于拒绝而不是找不到)。我知道其他人在连接到 R 时遇到了问题。有一个非常相似的 Mac 问题stackoverflow.com/questions/27190975/…,对于不知道环境变量是什么的人来说安装会很困难,所以有些人只是没有完成所有步骤,但我的变量看起来不错。我对 jar 文件完全没有经验。
  • 您可以尝试通过电子邮件将此问题的链接发送给 R 扩展的作者。我不确定他们是否在这里闲逛。
  • 针对 java 版本不兼容问题更新

标签: java netlogo


【解决方案1】:

我认为关键是确保您的所有软件都是 64 位或 32 位的。我可以通过使用所有 64 位 R、Java 和 NetLogo 从 NetLogo 成功打开 R。我的工作代码可以在这里找到。 https://raw.githubusercontent.com/tonysdatamodels/netlogo.in.r/main/open%20netlogo%20in%20r。我在 youtube 视频上还有一个简短的视频,解释了如何从 R https://www.youtube.com/watch?v=zWMdaTEPTOc 成功打开 NetLogo。

【讨论】:

    【解决方案2】:

    好的,解决了(如果有些不满意)。我把它留在这里是因为我想其他使用 Windows 的人希望 R 和 NetLogo 相互交谈。

    问题在于 NetLogo 需要 32 位 Java。我不知道 R 扩展的开发人员是如何获得 64 位 R 的屏幕截图的,但您真正需要做的是使用 32 位 R。

    (1) uninstall 64bit java and instead install 32bit java
    
    (2) add the 32bit R installation
    
    (3) leave the environment variable %R_HOME% as in instructions
    
    (4) add %R_HOME%\bin\i386 to Path
    

    重要的一点是第(4)步,让R扩展找到R的32位安装。R安装目录有两个bin子目录,一个是64位(x64),一个是32位(i386)。 Path 需要找到 32 位版本。

    步骤 (1) 可能是可选的 - 我根本没有必要的 java 理解来解决如何处理 32 位和 64 位版本的 java。

    【讨论】:

    • re:Windows 上的 64 位 Java,我看到你找到了 github.com/NetLogo/NetLogo/issues/423。在此处添加链接以防其他人感兴趣
    • 查看 R 扩展的“doc”文件夹。有两个 pdf 文件,其中一个解释如何让 NetLogo 运行 64 位 Java。
    • NetLogo 提供了新的 64 位 java,现在也可以更轻松地使用 64 位 R。两招。 (1) 在文档的第 12 步,确保在键入 java -jar ... 之前进入 NetLogo 中的“app”文件夹,因为 NetLogo jar 文件现在位于不同的位置。 (2) 如果运行Win 8.1,您可能还需要stackoverflow.com/questions/16428098/…答案中的注册表项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2016-03-20
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2012-08-12
    相关资源
    最近更新 更多