Подтвердить что ты не робот

Java установлена ​​в листинге, но выполнение создает "./java: нет такого файла или каталога"

Я только что запустил script ниже, и он извлекает и распаковывает JDK в нужное место. Проблема в том, что каждая команда java (скопированная в /urs/bin ) дает ошибки. Затем я дважды проверяю, перейдя в каталог установки JDK с помощью cd (теперь я в JDK/bin) и введите: ./java -version и получите: ./java: No such file or directory, но java есть! ls -l на JDK показывает, что все клиенты java находятся внутри корзины.

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
#Modify these variables as needed...
tempWork=/tmp/work
locBin=/usr/local/bin
javaUsrLib=/usr/lib/jvm

sudo mkdir -p $javaUsrLib
mkdir -p $tempWork
cd $tempWork

#Update this line to reflect newer versions of JDK...
wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz

#Extract the download
tar -zxvf $tempWork/*

#Move it to where it can be found...

sudo mv -f $tempWork/jdk1.7* $javaUsrLib/

sudo ln -f -s $javaUsrLib/jdk1.7*/bin/* /usr/bin/
sudo rm -rf $tempWork
#Update this line to reflect newer versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_02"

if ! grep "JAVA_HOME=$javaUsrLib/jdk1.7.0_02" /etc/environment
then
    echo "JAVA_HOME=$javaUsrLib/jdk1.7.0_02"| sudo tee -a /etc/environment
fi

sudo /sbin/reboot

exit 0

Запуск ls -l /usr/lib/jvm/jdk1.7.0_02/bin/java дает мне: [email protected]:~$ -rwxr-xr-x 1 yucca yucca 5654 2011-11-17 22:38 /usr/lib/jvm/jdk1.7.0_02/bin/java

также выполнялся: file /usr/lib/jvm/jdk1.7.0_02/bin с выходом:

/usr/lib/jvm/jdk1.7.0_02/bin: directory
4b9b3361

Ответ 1

Вы работаете на 64-битной системе без 32-битной среды выполнения.

Предполагая проблему ubuntu/debian:

apt-get install libc6-i386

Или вы должны установить 64-битную версию пакета в эту виртуальную машину (это, вероятно, лучшее решение).

Сообщение об ошибке поступает из компоновщика/загрузчика времени выполнения. если вы выполните readelf -l java, вы найдете строку, например:

 [Requesting program interpreter: /lib/ld-linux.so.2]

Что вы ожидаете от 32-битного приложения, и у вас, вероятно, нет установленной 32-битной среды - проверьте с ls -l этого program interpreter.

и пример для 64-битной программы будет выглядеть (ваша система может различаться):

 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

Если это не так, и у вас установлен 32-битный libc, вы можете попробовать ldd java, который даст список, например:

linux-gate.so.1 =>  (0xf76ef000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76b3000)
libjli.so => /home/bubba/java/jdk1.7.0_02/bin/./../jre/lib/i386/jli/libjli.so (0xf769f000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7699000)
libc.so.6 => /lib32/libc.so.6 (0xf751f000)
/lib/ld-linux.so.2 (0xf76f0000)

если есть строки, которые говорят not found, тогда вы должны добавить pagkages, предоставляя это, но, как вы можете видеть из этого ldd, все зависимости - это основные библиотеки, которые должны присутствовать практически во всех Linux-системах.

Ответ 2

Я получал

bash:/usr/bin/java: нет такого файла или каталога

Проблема заключалась в том, что я установил версию i586 Java на x86_64 Debian.

Исправление: я удалил его и установил версию x64 Java. Сейчас все работает нормально.