не удалось загрузить rJava [duplicate]

Вместо того, чтобы бросать код на вас, есть два понятия, которые являются ключом к пониманию того, как JS обрабатывает обратные вызовы и асинхронность. (это даже слово?)

Модель цикла события и параллелизма

Есть три вещи, о которых вам нужно знать; Очередь; цикл события и стек

. В широких упрощенных терминах цикл событий подобен диспетчеру проекта, он постоянно прослушивает любые функции, которые хотят запускать и взаимодействовать между очереди и стека.

while (queue.waitForMessage()) {
   queue.processNextMessage();
}

Как только он получает сообщение для запуска чего-то, он добавляет его в очередь. Очередь - это список вещей, которые ждут выполнения (например, ваш запрос AJAX). Представьте себе это так:

 1. call foo.com/api/bar using foobarFunc
 2. Go perform an infinite loop
 ... and so on

Когда одно из этих сообщений будет исполнено, оно выталкивает сообщение из очереди и создает стек, стек - это все, что нужно выполнить JS для выполнения инструкции в сообщение. Таким образом, в нашем примере ему говорят позвонить foobarFunc

function foobarFunc (var) {
  console.log(anotherFunction(var));
}

. Так что все, что foobarFunc должно выполнить (в нашем случае anotherFunction), будет вставлено в стек. исполняемый, а затем забытый - цикл события затем переместится на следующую вещь в очереди (или прослушивает сообщения)

. Главное здесь - порядок выполнения. Это

КОГДА что-то будет запущено

Когда вы совершаете вызов с использованием AJAX для внешней стороны или выполняете любой асинхронный код (например, setTimeout), Javascript зависит от ответ, прежде чем он сможет продолжить.

Большой вопрос, когда он получит ответ? Ответ в том, что мы не знаем, поэтому цикл событий ждет, когда это сообщение скажет: «Эй, забери меня». Если JS просто ждал этого сообщения синхронно, ваше приложение замерзнет, ​​и оно сосать. Таким образом, JS продолжает выполнение следующего элемента в очереди, ожидая, пока сообщение не будет добавлено обратно в очередь.

Вот почему с асинхронной функциональностью мы используем вещи, называемые обратными вызовами. Это похоже на обещание буквально. Как и в I , обещание что-то вернуть в какой-то момент jQuery использует специальные обратные вызовы, называемые deffered.done deffered.fail и deffered.always (среди других). Вы можете увидеть их все здесь

Итак, вам нужно передать функцию, которая в какой-то момент будет выполнена с переданными ей данными.

Поскольку обратный вызов не выполняется немедленно, но в более позднее время важно передать ссылку на функцию, которую она не выполнила. поэтому

function foo(bla) {
  console.log(bla)
}

, поэтому большую часть времени (но не всегда) вы пройдете foo не foo()

. Надеюсь, это будет иметь смысл. Когда вы сталкиваетесь с такими вещами, которые кажутся запутанными, я настоятельно рекомендую полностью прочитать документацию, чтобы хотя бы понять ее. Это сделает вас намного лучшим разработчиком.

33
задан Abhishek Bhatia 26 December 2014 в 21:35
поделиться

8 ответов

Использование:

Sys.setenv(JAVA_HOME='...path to JRE...')

, например

Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jdk1.7.0_51\\jre')

Неправильная переменная среды.

27
ответ дан Thomas 25 August 2018 в 19:47
поделиться

Вероятно, это проблема с настройкой с помощью указателя JAVA_HOME. Если у вас нет JDK, но JRE, вот вам, возможно, придется сделать: Sys.setenv (JAVA_HOME = 'C: \ Program Files \ Java \ jre1.8.0_161')

Не забудьте изменить номера после «jre» на основе того, что у вас есть на вашем компьютере. Вот ссылка , которая объясняет разницу между JDK и JRE.

0
ответ дан Bowen Chen 25 August 2018 в 19:47
поделиться

Попробуйте загрузить ежедневную сборку RStudio: http://dailies.rstudio.com

Это сработало для меня во второй попытке после того, как я попробовал все остальное (обновленный R, Rstudio, Java, переустановил rJava миллион раз и выполнил все советы по стекированию).

Совет появился на форумах поддержки RStudio :

RStudio действительно не читает некоторые сведения о запуске, обычно предоставляемые R здесь ...

У нас есть потенциальная возможность для этого в последних ежедневных сборках RStudio - если вы согласны , вы можете попробовать загрузить и проверить с помощью http://dailies.rstudio.com

0
ответ дан havi 25 August 2018 в 19:47
поделиться

Я столкнулся с подобной проблемой и провел целый день, чтобы устранить ее. Хотя мой компьютер, windows7 и Rstudio - 64 бит, но моя Java 32-битная (!) Однажды я понял, что я загружаю 64-битную Java. Мне нужно вручную загрузить, автоматическая загрузка приведет к 32-битной версии, потому что мой браузер Chrome - 32 бит. 64-битная Java будет автоматически установлена ​​в

C: \ Program Files \ Java, однако 32-битная Java будет автоматически установлена ​​в C: \ Program Files (x86) \ Java.

Это важный индикатор, указывающий, что моя Java - 64-разрядная или 32-разрядная.

После установки 64-битной Java все работает отлично!

2
ответ дан holms 25 August 2018 в 19:47
поделиться

Я получил аналогичную ошибку:

> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)
  error: unable to load shared object 'C:/program files/R/R-3.1.2/library/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  The specified module could not be found.

Мой JAVA_HOME указывал на JDK, а не на JRE.

> Sys.getenv("JAVA_HOME")
[1] "c:\\java\\jdk1.7.0_55"
> Sys.setenv(JAVA_HOME="c:\\java\\jdk1.7.0_55\\jre")

Теперь я мог загружать rJava и xlsx в R.

18
ответ дан Justin 25 August 2018 в 19:47
поделиться

Я получаю эту ошибку каждый раз, когда Java переполняет обновление на моем ПК. Когда я иду:

Sys.getenv("Path")

Я нахожу что-то в выходе, которое выглядит как

C:\\Program Files \\Java\\jre1.8.0_112\\bin\\server\\

, где последние несколько цифр подпапки jre устарели.

Чтобы исправить это повсюду, вы можете отредактировать переменную среды Windows. Сделайте это, перейдя в меню WINDOWS + X, выбрав в командной строке команду «Командная строка» (Admin) и введите

rundll32.exe sysdm.cpl,EditEnvironmentVariables

в поле команды. Это вызовет это диалоговое окно с правами прав для переменной PATH (и другими системными переменными):

Интерфейс Windows для редактирования длинных переменных среды является немного громоздким, поэтому после того, как я нажму Редактировать ... Мне нравится копировать-вставить полученный беспорядок пути в Notepad.exe , выполнить там работу и скопировать-вставить обратно.

3
ответ дан lebelinoz 25 August 2018 в 19:47
поделиться

Была такая же проблема:

Я запускал 64-bit R, вы можете проверить, какая версия закрывается и повторно открывается RStudio. Он должен быть наверху.

У меня установлен 32-bit java, т.е. папка Java находилась в C:\Program Files (x86).

Я просто перешел на Java.com и загрузил 64-bit Java и добавил его в конце PATH в System variables, и теперь я могу загрузить rJava. (Установка попросила меня избавиться от старой версии, которую я сделал)

2
ответ дан Shery 25 August 2018 в 19:47
поделиться

Столкнулся с аналогичным сообщением об ошибке.

Пробовал несколько шагов, перечисленных здесь.

  1. Установить Env. Переменная, JAVA_HOME. => Не работает.
  2. Пытался установить rJava +> Не работало Шаги 3,4,5 сработали ..
  3. Обновил мою версию 64-разрядной версии Java версии 64.xx ( последний доступный)
  4. install.packages (rJava) ==> Успех
  5. install.packages (RWeka) ==> Успех
2
ответ дан user2162611 25 August 2018 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: