Ваша проблема зависит от 64/32 битных версий.
Вы запускаете 32-битный R, который использует 32-битную командную строку и находите 32-битный Java. Если вы используете 64-битную версию R, тогда она запускает 64-битную командную строку и соответствующую Java.
Вы можете проверить это, запустив 32-битную командную строку (следующий этот пост ):
- Нажмите Пуск.
- Введите
%windir%\SysWoW64\cmd.exe
в поле Начать поиск.
- Нажмите Enter.
- Тип
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.