R ищет неправильную версию Java - PullRequest
3 голосов
/ 17 марта 2010

Я много раз устанавливал / удалял java jre / jdk и, наконец, установил старую версию 1.6.0_17, которая сейчас находится в "C: \ Program Files \ Java \ jre6 \ bin". Теперь, в конце концов, если я вызываю 'java -version' в R, я могу видеть, что R ищет Java по старому пути, который сейчас неверен. Вопрос в том, почему R ищет Java по неверному пути, даже если путь к Windows установлен правильно? Насколько я вижу, в пути Windows нет двойных записей, и с тех пор я перезапускал R и Windows более одного раза. Любые идеи, где R берет неправильный путь?

На оболочке Windows:
$>set <br> [..]<br> OS=Windows_NT<br> Path=C:\Program Files\Java\jre6\bin;<br> [..]<br>

$> java -version<br> java version "1.6.0_17"<br> Java(TM) SE Runtime Environment (build 1.6.0_17-b04)<br> Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)<br>

в пределах R:
$>system("java -version")<br> Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.cfg' <br>

Ответы [ 4 ]

2 голосов
/ 21 января 2011

Я попал на эту страницу, пытаясь понять, почему мой JDK сообщал о 64-битных отчетах, несмотря на то, что PATH и JAVA_HOME указывали на 32-битные.

Я даже не знаю, что такое R, но эта статья может помочь (она решила меня)

http://www.tipandtrick.net/2008/how-to-open-and-run-32-bit-command-prompt-in-64-bit-x64-windows/

В двух словах, не запускайте из 'cmd', используйте вместо этого '% windir% \ SysWoW64 \ cmd.exe'. Или поместите свой JDK в начало пути вместо конца (я не думаю, что это идеально).

2 голосов
/ 18 марта 2010

Ваша проблема зависит от 64/32 битных версий.
Вы запускаете 32-битный R, который использует 32-битную командную строку и находите 32-битный Java. Если вы используете 64-битную версию R, тогда она запускает 64-битную командную строку и соответствующую Java.

Вы можете проверить это, запустив 32-битную командную строку (следующий этот пост ):

  1. Нажмите Пуск.
  2. Введите %windir%\SysWoW64\cmd.exe в поле Начать поиск.
  3. Нажмите Enter.
  4. Тип java -version

В моей системе происходит сбой, потому что у меня нет 32-битной Java. С помощью стандартного cmd.exe я получаю правильный путь.

Для возможного решения есть два пути. Установите 32-разрядную версию R и 32-разрядную версию Java или 64-разрядную версию R (которая официально поддерживается в версии 2.11 ) и 64-разрядную версию Java. В моей системе (64-битная Windows 7) у меня есть оба набора, поэтому в 32-битной комбинации я получаю:

> system("java -version")
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

И на 64-битной:

> system("java -version")
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)

В 64-битной версии вы можете вызывать 32-битную Java с помощью 32-битной cmd:

shell(
    "java -version",
    shell = file.path(Sys.getenv("windir"),"SysWoW64/cmd.exe")
)
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

О комментарии Шейна. Мне кажется, вопрос в том, как R получает путь к 32-битному cmd. Потому что я не могу найти способ вызвать 64-битный cmd на 32-битном R.

1 голос
/ 17 марта 2010

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

1 голос
/ 17 марта 2010

Вы предполагаете, что R смотрит на путь Windows, но код говорит вам, что это не так. Поэтому проверьте ваше предположение: R получает путь куда-то еще.

Если я открою командную оболочку на моем компьютере с Windows и наберу "java -version", я получу следующее:

C:\>java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)

Если я проверяю ПУТЬ на моей машине, я получаю (отредактировано для ясности):

C:\>set path
Path=;C:\JDKs\jdk1.6.0_13\bin;

Если я открываю R версии 2.8.1 и запускаю систему ("java -version"), я получаю это:

> system("java -version")
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Client VM (build 14.1-b02, mixed mode, sharing)
>

Итак, как я уже сказал, R не использует мой путь для поиска java.exe. Это использует что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...