我刚试过这个,但是我收到了这条错误消息。有关如何解决它的任何想法?我使用的是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
答案 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):
/Library/Java/Home
,但它可能是另一个。您可以使用eclipse IDE(首选项,已安装的jRE)来定义目录。sudo R CMD javareconf -n
重新配置R.
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"
install.packages("rJava", type="source"
) DYLD_PRINT_LIBRARIES=1 R
library(rJava)
.jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
然后,安装RNetLogo
。就是这样。