【问题标题】:RNetLogo not working on Mac YosemiteRNetLogo 在 Mac Yosemite 上不起作用
【发布时间】:2014-10-28 20:44:06
【问题描述】:

我刚试过这个,但我收到了这个错误消息。关于如何解决它的任何想法?我用的是R版本3.1.1,RNetLogo_1.0-1,平台是x86_64-apple-darwin13.1.0(64位),Java 7 update 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

【问题讨论】:

  • 您是否阅读了?NLStart 中有关在 OSX 中使用的详细信息部分?我问是因为它相当清楚地表明这不应该在 JGR 环境之外工作。我也没有看到证据表明您按照指示执行Sys.setenv(NOAWT=1)
  • 即使在使用 Sys.setenv(NOAWT=1) 之后,它也不起作用。
  • 这里有同样的问题。 groups.yahoo.com/neo/groups/netlogo-users/conversations/topics/… 建议更新到 Java 7 应该已经取得了成绩,但它在我这边也不起作用(Maverick,RNetLogo_1.0-1,Java 8)
  • 您安装了 Java 8,但您确定它实际上已成功使用它吗? Java 8 应该不可能给出“Unsupported major.minor version 51.0”错误。

标签: r netlogo osx-yosemite


【解决方案1】:

您至少需要 Java 7。

我错过了将包描述中的要求更新为 Java >= 7。 对此感到抱歉。 CRAN 维护人员要求我清理包,即更新到 Java 7 并删除对旧 Java 和 NetLogo 版本的支持。

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

最好的祝愿, 一月

【讨论】:

    【解决方案2】:

    您使用的是哪个版本的 RNetLogo?根据http://cran.r-project.org/web/packages/RNetLogo/news.html 的说法,RNetLogo 0.9-6 版本修复了导致“Unsupported major.minor version 51.0”版本错误的bug。

    【讨论】:

    • 我正在使用 RNetLogo_1.0-1
    • 我想知道作者是否不小心重新引入了这个错误。附加组件作者很容易忘记编译他们的代码,因此它适用于旧的 Java 版本。
    【解决方案3】:

    请检查 R 使用的是哪个 Java 版本。 我在使用 Java 7 的 Ubuntu 安装中检查了它,没有任何问题。是的,应 CRAN 维护人员的要求,1.0-1 已删除对非常旧的 Java 和 NetLogo 版本的支持(这不是错误)。

    请在 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")
    

    干杯, 一月

    【讨论】:

    【解决方案4】:

    想将此作为评论,但我通过奖励问题并获得低于 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 中的错​​误消息提到 version 51 我知道 我确实在使用 Java 7,所以应该有RNetLogo 没问题吧?

    【讨论】:

    • 有人能解决这个问题吗?有什么想法吗?
    • 不确定它是否适用于 Mac 但您是否尝试过 R CMD javareconf(另请参见此处:r.789695.n4.nabble.com/…
    • 感谢您的建议。下周回到我的 mac 时,我会研究这个。
    • 感谢所有建议。我尝试了不同的方法来做到这一点,但我仍然无法更改 R 使用的 Java 版本 (1.6.0) :(
    • 问题与 rJava 有关。这里有一些细节:github.com/s-u/rJava/issues/37
    【解决方案5】:

    在尝试修复它数周后,RNetLogo 终于可以在我的笔记本电脑上使用 YosemiteThe 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. 在终端中使用 sudo R CMD javareconf -n 重新配置 R
    5. 在终端中,将路径设置为lijvm.dylib

    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 相关联。

    DYLD_PRINT_LIBRARIES=1 R library(rJava) .jinit() .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

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

    【讨论】:

    • 我按照sdaza提出的方法。通过终端使用 R 和 JGR 时,一切正常。但是,当我使用 R 控制台或 RStudio 尝试相同的操作时,不仅 RNetLogo 不起作用,而且不再找到 rJava。其他人有同样的经历吗?
    • 这在 Linux 上也能完美运行。关键步骤:(1)确保/usr/lib/jvm/default-java链接到正确的Java,然后(2)sudo R CMD javareconf作为root; (3)重新安装rJava然后重新启动R; (4)重新安装RNetLogo
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 2023-04-06
    • 2016-04-06
    • 2015-01-25
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多