RNetLogo не работает на Mac Yosemite
Я просто попробовал это, но получил это сообщение об ошибке. Любые идеи о том, как это исправить? Я использую R версии 3.1.1, RNetLogo_1.0-1, платформа x86_64-apple-darwin13.1.0 (64-разрядная версия), обновление для Java 7.
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
Ответы
Ответ 1
Вам нужна хотя бы Java 7.
Я пропустил обновление требований в описании пакета до Java >= 7.
Простите за это. Составители CRAN просят меня очистить пакет, то есть обновить до Java 7 и удалить поддержку старых версий Java и NetLogo.
Если используется более старая Java, получите старую версию RNetLogo (например, 1.0-0) из архива CRAN.
С наилучшими пожеланиями,
Ян
Ответ 2
Какую версию RNetLogo вы используете? Согласно http://cran.r-project.org/web/packages/RNetLogo/news.html, RNetLogo версии 0.9-6 исправил ошибку, вызвавшую ошибку версии Unsupported major.minor version 51.0.
Ответ 3
проверьте, какая версия Java используется R.
Я проверил его на одной из моих установок Ubuntu с Java 7 без каких-либо проблем. Да, поддержка очень старых версий Java и NetLogo была удалена с 1.0-1 по просьбе разработчиков CRAN (это не ошибка).
Пожалуйста, выполните следующие функции в 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")
Cheers,
Ян
Ответ 4
Хотел бы поместить это в качестве комментария, но я потерял право комментировать, присудив награду за задание и получив ниже 50 rep...: -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 будет использовать его, но почему-то кажется, что это не так. Для ясности я начну еще один вопрос, чтобы выяснить, как это решить (см. Получение R для использования более новых версий java).
Как говорится из Получение R для использования более новых версий java и тот факт, что сообщение об ошибке в R упоминает версия 51 Я понимаю что Я действительно использую Java 7, поэтому не должно быть никаких проблем с RNetLogo?
Ответ 5
После нескольких недель, пытаясь исправить это, RNetLogo
наконец-то работает на моем ноутбуке с Yosemite и The Capitan. Здесь у вас есть технические подробности относительно решения: https://github.com/s-u/rJava/issues/37
Это то, что я сделал (помните, что я использую R в терминале):
jvm = 'ls /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/server/lijvm.dylib'
sudo install_name_tool -id "$jvm" "$jvm"
- Установить rJava как источник
install.packages("rJava", type="source"
)
- Вы можете проверить терминал, чтобы убедиться, что вы связали rJava с 1.8, а не 1.6.
DYLD_PRINT_LIBRARIES=1 R
library(rJava)
.jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
Затем установите RNetLogo
. Это.