Я только что установил Java 8 на свой новый VPS. Я правильно установил ссылки, но все равно java или javac не работают:
root@vpsXXXXX:~# update-alternatives --display java
java - Auto-Modus
Link verweist zur Zeit auf /usr/lib/jvm/java-8-oracle/bin/java
/usr/lib/jvm/java-8-oracle/bin/java - Priorität 1
Gegenwärtig »beste« Version ist »/usr/lib/jvm/java-8-oracle/bin/java«.
root@vps149825:~#
Более конкретно:
root@vpsXXXXX:~# ls -l $(readlink -f /usr/bin/java)
-rwxr-xr-x 1 uucp 143 5730 Feb 11 07:26 /usr/lib/jvm/jdk1.8.0_40/bin/java
root@vpsXXXXX:~# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Mär 11 13:32 /usr/bin/java -> /etc/alternatives/java
root@vpsXXXXX:~# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 35 Mär 11 13:39 /etc/alternatives/java -> /usr/lib/jvm/java-8-oracle/bin/java
root@vpsXXXXX:~#
извините за немецкий, но я думаю, что это довольно ясно. Так что проблема не в ссылке. Даже если я захожу в директорию и пытаюсь запустить java оттуда, это не работает.
root@vps149825:~# cd ../usr/lib/jvm/java-8-oracle/bin/
root@vps149825:/usr/lib/jvm/java-8-oracle/bin# ls
appletviewer javafxpackager jdb jrunscript pack200 unpack200
ControlPanel javah jdeps jsadebugd policytool wsgen
extcheck javap jhat jstack rmic wsimport
idlj javapackager jinfo jstat rmid xjc
jar java-rmi.cgi jjs jstatd rmiregistry
jarsigner javaws jmap jvisualvm schemagen
java jcmd jmc keytool serialver
javac jconsole jmc.ini native2ascii servertool
javadoc jcontrol jps orbd tnameserv
root@vps149825:/usr/lib/jvm/java-8-oracle/bin# ./java
-bash: ./java: Datei oder Verzeichnis nicht gefunden
root@vps149825:/usr/lib/jvm/java-8-oracle/bin#
Также когда я пытаюсь
ldd /usr/lib/jvm/jdk1.8.0_40/bin/java
он говорит:
not a dynamic executable
Также:
root@vpsXXXXXXX:/usr/lib/jvm/jdk1.8.0_40/bin# file java
java: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, BuildID[sha1]=0x476386745161d6029010bc153c65060693cca771, not stripped
Мне кажется, что каких-то зависимостей не хватает?
Я использую 64-битную машину debian 6.7.
Проверьте, все ли символические ссылки, используемые для альтернатив, в порядке:
ls -l $(readlink -f /usr/bin/java)
Если ссылка отсутствует, попробуйте найти ее рекурсивно. Например:
ls -l /usr/bin/java
ls -l /etc/alternatives/java
...
Проблема заключалась в том, что я случайно установил 32-битную версию Java, хотя у меня 64-битная система. Если кто-нибудь знает, почему 32-битная версия не работает (потому что обычно она должна работать на 64-битной машине), я был бы признателен.
В любом случае установка 64-битной версии устранила проблему.