RNetLogo не работает на Mac 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

person sdaza    schedule 28.10.2014    source источник
comment
Вы читали раздел «Подробности» ?NLStart относительно использования в OSX? Я спрашиваю, потому что в нем довольно четко указано, что это не должно работать вне среды JGR. Я также не вижу доказательств того, что вы следовали инструкциям по выполнению Sys.setenv(NOAWT=1)   -  person IRTFM    schedule 29.10.2014
comment
Даже после использования Sys.setenv(NOAWT=1) это не работает.   -  person sdaza    schedule 29.10.2014
comment
Та же проблема здесь. groups.yahoo.com/neo/groups/netlogo-users/ беседы/темы/ предполагает, что обновление до Java 7 должно было принести пользу, но это также не работает на моей стороне (Maverick, RNetLogo_1.0-1, Java 8)   -  person Martin Van der Linden    schedule 30.10.2014
comment
Вы установили Java 8, но уверены ли вы, что успешно ее используете? Java 8 не должна выдавать ошибку «Unsupported major.minor version 51.0».   -  person Seth Tisue    schedule 01.11.2014


Ответы (5)


Вам нужна как минимум Java 7.

Я пропустил обновление требований в описании пакета до Java >= 7. Извините за это. Сопровождающие CRAN просят меня очистить пакет, то есть обновить его до Java 7 и удалить поддержку старых версий Java и NetLogo.

Если необходимо использовать более старую версию Java, получите старую версию RNetLogo (например, 1.0-0) из архива CRAN.

С наилучшими пожеланиями, Ян

person Jan C. Thiele    schedule 04.11.2014

Какую версию RNetLogo вы используете? Согласно http://cran.r-project.org/web/packages/RNetLogo/news.html , RNetLogo версии 0.9-6 исправил ошибку, которая вызывала ошибку версии «Unsupported major.minor version 51.0».

person Seth Tisue    schedule 28.10.2014
comment
Я использую RNetLogo_1.0-1 - person sdaza; 29.10.2014
comment
Интересно, авторы случайно повторно не ввели ошибку. Авторы надстроек легко забывают скомпилировать свой код, чтобы он работал со старыми версиями Java. - person Seth Tisue; 29.10.2014

пожалуйста, проверьте, какая версия 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")

Привет, Ян

person Jan C. Thiele    schedule 02.11.2014
comment
Как вы настроили rJava после ее установки? Я все еще застрял здесь: github.com/s-u/rJava/issues/37 - person sdaza; 06.12.2014

Хотел поставить это как комментарий, но я потерял право комментировать, присудив награду за вопрос и получив менее 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: спасибо, что ответили на вопрос. Я мог бы вернуться к более старым версиям RNetLogo, если это решит проблему. Дело в том, что я установил Java 8, поэтому я ожидал, что R будет его использовать, но почему-то кажется, что это не так. Для ясности я задам еще один вопрос, чтобы выяснить, как это решить (см. Заставить R использовать более новые версии java).

Об этом говорится в Как заставить R использовать более новые версии java и тот факт, что в сообщении об ошибке в R упоминается версия 51, я понимаю, что я действительно использую Java 7, поэтому не должно быть проблем с RNetLogo, верно?

person Martin Van der Linden    schedule 03.11.2014
comment
Может ли кто-нибудь исправить это? Любые идеи? - person sdaza; 08.11.2014
comment
Не уверен, что это работает на Mac, но пробовали ли вы R CMD javareconf (см. также здесь: r.789695.n4.nabble.com/) - person Jan C. Thiele; 08.11.2014
comment
Спасибо за предложение. Я посмотрю на это, когда вернусь к своему Mac на следующей неделе. - person Martin Van der Linden; 09.11.2014
comment
У меня та же проблема, и R CMD javareconf ничего не изменил. Я по-прежнему получаю R, указывающий на Java Runtime версии 1.6.0, хотя система (java -version) дает версию java 1.7.0. - person Kenji; 14.11.2014
comment
Спасибо за все предложения. Я пробовал разные способы сделать это, но я все еще не могу изменить версию Java, которую использует R (1.6.0): ( - person sdaza; 02.12.2014
comment
Проблема связана с rJava. Вот некоторые подробности: github.com/s-u/rJava/issues/37 - person sdaza; 06.12.2014
comment
Кажется, на данный момент лучшим решением является использование Windows: у меня не было проблем с Java 8 при использовании Windows. - person sdaza; 18.12.2014

После нескольких недель попыток исправить это 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. Установите Java 6 с Mac (http://support.apple.com/kb/DL1572)
  3. Необходимо правильно определить домашний каталог java. Я использовал /Library/Java/Home, но мог быть и другой. Вы можете использовать eclipse IDE (настройки, установленные jRE) для определения каталога.
  4. Перенастройте R, используя sudo R CMD javareconf -n в терминале
  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. Вот и все.

person sdaza    schedule 18.12.2014
comment
Я следовал методу, выложенному sdaza. Все отлично работает при использовании R и JGR через терминал. Однако, когда я пытаюсь сделать то же самое с помощью консоли R или RStudio, не только RNetLogo не работает, но и rJava больше не обнаруживается. У кого-нибудь еще есть такой же опыт? - person invictus; 18.06.2015
comment
Это отлично работало и в Linux. Ключевые шаги: (1) убедитесь, что /usr/lib/jvm/default-java ссылается на правильную Java, затем (2) sudo R CMD javareconf от root; (3) переустановите rJava и перезапустите R; (4) переустановите RNetLogo. - person akhmed; 20.08.2015