Вопрос или проблема
В процессе установки Java (в рамках Weblogic) с помощью Ansible возникла эта проблема. Я иногда замечал это ранее, но не могу вспомнить решение.
У меня есть новый пользователь Linux “weblogic” в группе “weblogic” на Ubuntu 24, HOME=/opt/oracle
Я подключаюсь по SSH к удаленной машине как свой собственный пользователь, затем делаю sudo su weblogic. Я экспортирую JAVA_HOME и PATH, либо через .bashrc, либо вручную
declare -x PATH="/opt/oracle/jdk1.8.0_431/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
declare -x JAVA_HOME="/opt/oracle/jdk1.8.0_431"
Но когда я выполняю команды
java
bash: /opt/oracle/jdk1.8.0_431/bin/java: Нет такого файла или каталога
/opt/oracle/jdk1.8.0_431/bin/java
bash: /opt/oracle/jdk1.8.0_431/bin/java: Нет такого файла или каталога
Права доступа выглядят следующим образом, на всех уровнях от /opt
drwxr-xr-x 4 weblogic weblogic 4096 дек 9 15:27 oracle/
Сначала я предполагал, что это проблема с Ansible, о которой я не знаю, и спросил здесь https://stackoverflow.com/questions/79265126/using-the-lookup-ansible-builitin-env-on-the-environment-variable-path-does-not
.
Ответ или решение
Если вы сталкиваетесь с ошибкой "bash: no such file or directory" при попытке запустить Java на Ubuntu 24, это может быть связано с несколькими факторами, включая неверные права доступа, отсутствие самой бинарной программы или ошибки в настройке переменных окружения. Давайте подробно рассмотрим возможные причины и их решения.
Анализ проблемы
-
Путь к исполняемому файлу: На первом этапе важно убедиться, что файл
java
действительно существует по указанному пути (/opt/oracle/jdk1.8.0_431/bin/java
). Для этого выполните команду:ls -l /opt/oracle/jdk1.8.0_431/bin/java
Если файл не найден, это может свидетельствовать о том, что Java не была корректно установлена, или файл был случайно удалён.
-
Права доступа: Если файл существует, но вы по-прежнему видите ошибку, проверьте права доступа к файлу
java
. Вы можете использовать командуls -l
для получения информации о правах:ls -l /opt/oracle/jdk1.8.0_431/bin/
Убедитесь, что файл имеет права на выполнение. Для этого проверяйте, есть ли
x
(execute) в правах, например:-rwxr-xr-x
. Если прав недостаточно, вы можете их установить командой:sudo chmod +x /opt/oracle/jdk1.8.0_431/bin/java
-
Архитектура и зависимости: Иногда исполняемые файлы могут не работать из-за несоответствия архитектуры системы. Убедитесь, что вы установили версию Java, совместимую с вашей версией Ubuntu (например, x86 vs x64). Для проверки архитектуры используйте:
uname -m
Если файл был скомпилирован для другой архитектуры, вы увидите ошибку, связанную с несовместимостью.
-
Переменные окружения: Вы упомянули, что вы экспортировали переменные окружения
JAVA_HOME
иPATH
. После внесения изменений в.bashrc
вам нужно либо перезапустить терминал, либо вручную выполнить команду:source ~/.bashrc
Это необходимо для того, чтобы изменения вступили в силу.
Решение
После выполнения вышеуказанных шагов, следует попробовать снова запустить Java:
java -version
Заключение
Если даже после выполнения этих шагов проблема не решается, рекомендуется детально проверить установочные скрипты Java и симптомы установки через ansible
, а также лог-файлы, чтобы выявить любые скрытые ошибки. В случае если проблема сохраняется, вы можете обратиться за помощью к сообществу или в документацию Ansible, чтобы выяснить, корректно ли выполняются команды установки и конфигурации.
Не забывайте: обращая внимание на детали и логи, вы сможете быстро выявить и устранить такие проблемы в будущем.