RNetLogo无法在Mac Yosemite上运行

时间:2014-10-28 20:44:06

标签: r netlogo osx-yosemite

我刚试过这个,但是我收到了这条错误消息。有关如何解决它的任何想法?我使用的是R版本3.1.1,RNetLogo_1.0-1,平台是x86_64-apple-darwin13.1.0(64位),Java 7更新60.

Sys.setenv(NOAWT=1)
library(JGR)
Sys.unsetenv("NOAWT")

JGR()
library(RNetLogo)

nl.path <- "/Applications/NetLogo 5.1.0"
NLStart(nl.path) 
Error in .jnew("nlcon/Preprocess") : 
  java.lang.UnsupportedClassVersionError: nlcon/Preprocess : Unsupported major.minor version 51.0

5 个答案:

答案 0 :(得分:3)

至少需要Java 7。

我错过了将包描述中的要求更新为Java&gt; = 7。 对不起。 CRAN维护者要求我清理软件包,即更新到Java 7并删除对旧Java和NetLogo版本的支持。

如果应该使用较旧的Java,请从CRAN存档获取旧的RNetLogo版本(例如1.0-0)。

祝福, 扬

答案 1 :(得分:2)

您使用的是什么版本的RNetLogo?根据{{​​3}},RNetLogo版本0.9-6修复了导致&#34; Unsupported major.minor版本51.0&#34;版本错误。

答案 2 :(得分:2)

请检查R使用的是哪个Java版本。 我使用Java 7在我的一个Ubuntu安装上检查它没有任何问题。是的,根据CRAN维护者的要求,已经删除了对旧的Java和NetLogo版本的支持1.0-1(这不是一个bug)。

请在R中执行以下功能以检查哪个Java处于活动状态:

    library(rJava)
    .jinit()
    .jcall("java/lang/System", "S", "getProperty", "java.vm.version")
    .jcall("java/lang/System", "S", "getProperty", "java.vm.name")
    .jcall("java/lang/System", "S", "getProperty", "java.vm.info")
    .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
    .jcall("java/lang/System", "S", "getProperty", "sun.arch.data.model")

干杯, 扬

答案 3 :(得分:2)

希望将此作为评论,但我失去了通过给予问题赏金并且低于50代表而发表评论的权利......:-S

@Jan:我执行了你提到的功能并得到了以下内容

[1] 0
     .jcall("java/lang/System", "S", "getProperty", "java.vm.version")
[1] "20.65-b04-462"
     .jcall("java/lang/System", "S", "getProperty", "java.vm.name")
[1] "Java HotSpot(TM) 64-Bit Server VM"
     .jcall("java/lang/System", "S", "getProperty", "java.vm.info")
[1] "mixed mode"
     .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
[1] "1.6.0_65-b14-462-11M4609"
     .jcall("java/lang/System", "S", "getProperty", "sun.arch.data.model")
[1] "64"

我知道R可能没有找到合适的Java版本。我也收到错误消息

Error in .jnew("nlcon/Preprocess") : 
  java.lang.UnsupportedClassVersionError: nlcon/Preprocess : Unsupported major.minor version 51.0 

我是否正确理解版本51.0对应于Java 7的某些更新? Java 7应该有问题吗?我们真的需要确保R找到并使用Java 8吗?我猜R还在尝试使用Java 7提示有什么问题吗?知道如何解决这个问题吗?

按照Jan的最后一个答案编辑

@Jan:感谢你跟进这个问题。如果它解决了问题,我可能会选择回到RNetLogo的旧版本。问题是我安装了Java 8,所以我希望R使用它,但不知何故它似乎没有。为清楚起见,我将开始另一个问题,以便弄清楚如何解决这个问题(见Getting R to use newer versions of java)。

这可以从Getting R to use newer versions of java和R中的错误消息提到版本51 这一事实我明白我确实在使用Java 7 ,所以那里对RNetLogo来说应该没问题吗?

答案 4 :(得分:2)

在尝试修复它几周后,RNetLogo终于使用 Yosemite The Capitan 在我的笔记本电脑上工作了。您可以在此处获得有关解决方案的技术详细信息:https://github.com/s-u/rJava/issues/37

这就是我所做的(记住我在终端使用R):

  1. 安装Java 8(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. 从Mac安装Java 6(http://support.apple.com/kb/DL1572
  3. 有必要正确定义java主目录。我使用/Library/Java/Home,但它可能是另一个。您可以使用eclipse IDE(首选项,已安装的jRE)来定义目录。
  4. 使用终端
  5. 中的sudo R CMD javareconf -n重新配置R.
  6. 在终端中,将路径设置为lijvm.dylib
  7. jvm = 'ls /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/server/lijvm.dylib' sudo install_name_tool -id "$jvm" "$jvm"

    1. 将rJava安装为源install.packages("rJava", type="source"
    2. 您可以检查终端以确保已将rJava与1.8而不是1.6相关联。
    3. DYLD_PRINT_LIBRARIES=1 R library(rJava) .jinit() .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

      然后,安装RNetLogo。就是这样。