我意识到这并不是一个真正的编程问题,但是我希望这里一位经验丰富的NetLogo员工可以看到我做错了,特别是因为你们中的许多人都在Java中工作而我却没有。
我正在尝试连接R扩展名,以便可以使用R库做一些棘手的网络工作。我正在使用Windows7。详细的安装说明描述了必须设置的三个系统变量。我这样做了,并从命令提示符中回显了它们,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的扩展。安装该文件(请注意其他有此问题的人,只需将文件夹移动到extensions文件夹中),看来我的计算机已安装(至少)两个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位。此外,由于我使用64位R,因此无法卸载Java并替换为32位版本。
最佳答案
好的,解决了(如果有些不满意)。我将其保留在此处,是因为我想象使用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)。路径需要找到32位版本。
步骤(1)可能是可选的-我根本没有必要的Java知识来弄清楚如何处理32位和64位版本的Java。
关于java - 无法在NetLogo中使用R扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33345640/