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 в терминале):

  • Установить Java 8 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
  • Установите Java 6 с Mac (http://support.apple.com/kb/DL1572)
  • Необходимо правильно определить домашний каталог java. Я использовал /Library/Java/Home, но это может быть другое. Вы можете использовать Eclipse IDE (настройки, установленные jRE) для определения каталога.
  • Переконфигурируйте R с помощью sudo R CMD javareconf -n в терминале
  • В терминале установите путь к 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. Это.