Я пытаюсь заставить Oracle Java 7 update 3 работать правильно на Debian 6. Я скачал и настроил файлы в /usr/java/jre1.7.0_03
. Я также установил следующие две строки в конце /etc/bash.bashrc
:
export JAVA_HOME=/usr/java/jre1.7.0_03
export PATH=$PATH:$JAVA_HOME/bin
Вход в систему с другими пользователями и root в порядке, Java можно найти:
chris@mc:~$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
Однако есть два случая, когда Java не может быть найден, как описано ниже. Обратите внимание, что оба они работали нормально, когда я ранее установил OpenJDK Java 6 через aptitude, но мне нужен Oracle Java 7 по разным причинам.
Самое главное, что я не могу запускать команды как другой пользователь через
su
, несмотря на то, что PATH показывает, что Java должна присутствовать. Пользователь был создан сadduser chris
root@mc:~# su chris -c "echo $PATH" /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/jre1.7.0_03/bin:/bin root@mc:~# su chris -c "java -version" bash: java: command not found root@mc:~# su chris -c "/usr/java/jre1.7.0_03/bin/java -version" java version "1.7.0_03" ...
Как это может быть в
PATH
но не может быть найдено? Обновление 05/04/2012: объяснил Дэниел, что это неинтерактивная оболочка, поэтому файлы, такие как/etc/profile
и/etc/bash.bashrc
, не выполняются. Выполнение полной замены этого пользователя и запуск Java работает:root@mc:~# su chris chris@mc:/root$ java -version java version "1.7.0_03" ...
При запуске я запускаю скрипт, который показывает похожие, но немного другие проблемы. Скрипт находится в
/etc/init.d/start-mystuff.sh
и вызывает jar:#!/bin/bash # /etc/init.d/start-mystuff.sh java -jar /opt/Mars.jar
Я могу подтвердить, что скрипт запускается при запуске, и код завершения равен 127, что указывает на то, что команда не найдена. Вставка строки для печати / сохранения
PATH
показывает, что это:/sbin:/usr/sbin:/bin:/usr/bin
Эта вторая проблема не так важна, потому что я могу просто указать на исполняемый файл Java в сценарии, но мне все еще интересно!
Я попытался установить полный PATH
и JAVA_HOME
явно в /etc/environment
что не помогло. Я также попытался установить их в /etc/profile
который, похоже, тоже не помогает. Я попытался войти и выйти снова после установки PATH
в различных местах (дух!).
В любом случае, длинный пост о том, что, вероятно, будет иметь простое однострочное решение :( Любая помощь с этим будет принята с благодарностью, я потратил слишком много времени, пытаясь исправить это сам
мотивация
Первая проблема может показаться неясной, но в моей системе у меня есть пользователи, которым не разрешен доступ по SSH, но я все еще хочу запускать процессы как они. У меня есть куча скриптов, работающих таким образом, и я не хочу менять их все.