2012-01-31 10 views
13

Acabo de ejecutar el script a continuación y recupera y descomprime el JDK en la ubicación correcta. El problema es que cada comando java (copiado a /urs/bin) produce errores. Luego comprobé dos veces yendo al directorio de instalación de JDK por medio de cd (ahora estoy en JDK/bin) y escribo: ./java -version y obtengo: ./java: No such file or directory, ¡pero java está ahí! ls -l en el JDK muestra que todos los clientes java están dentro del contenedor .Java está instalado, en el listado, pero la ejecución produce "./java: No existe ningún archivo o directorio"

#!/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 

Correr me da 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

también funcionó: file /usr/lib/jvm/jdk1.7.0_02/bin con una potencia de:

/usr/lib/jvm/jdk1.7.0_02/bin: directory 
+3

¿Reiniciando para instalar java? Esa no es la "Manera de Unix". –

+0

@MarcB Si el usuario cierra el terminal, el entorno (con Java) se perderá? Mi script funcionó hace unos días y cuando corro con bash -x puedo ver el jdk siendo desempaquetado en su totalidad ... – thejartender

+0

No, el elemento '/ etc/environment' asegura que la variable JAVA_HOME se mostrará en todos los shells nuevos. La única razón por la que puedo pensar para el reinicio es asegurarme de que todos los 'viejos' jvms actualmente en ejecución terminen. –

Respuesta

29

Usted está ejecutando en un sistema de 64 bits sin un entorno de 32 bits en tiempo de ejecución.

Suponiendo tema Ubuntu/Debian:

apt-get install libc6-i386 

O debería instalar la versión de 64 bits del paquete en la máquina virtual (que es probablemente la mejor solución).

El mensaje de error proviene del enlazador/cargador en tiempo de ejecución. si lo hace un readelf -l java se encuentra una línea como:

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

¿Qué es lo que esperas de una aplicación de 32 bits, y es probable que no tenga instalado el entorno de 32 bits - comprobar con un ls -l de ese program interpreter .

y ejemplo para un programa de 64 bits se vería así (el sistema puede variar):

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

Si este no es el caso, y usted tiene la de 32 bits libc instalado, puede intentar un ldd java, que dará una lista como:

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) 

si hay líneas diciendo not found entonces habría que añadir que proporcionan pagkages, pero como se puede ver en esta ldd todas las dependencias son bibliotecas del núcleo que deben estar presentes en la prácti cally todos los sistemas de Linux.

+0

Gracias. Esto es lo que sucedió ... Estoy en el proceso de hacer una serie de tutoriales que muestran cómo configuré mi entorno de desarrollo. Ahora noté que la versión que estoy usando de Ubuntu en VirtualBox era AMD de 64 bits y estoy en chip Intel. Antes de esto, el script funcionó, pero noté que el nuevo invitado que hice ayer es de la imagen incorrecta de Ubuntu. – thejartender

+0

Tuve el mismo problema que el OP y se resolvió ejecutando 'apt-get install libc6-i386'. Me pregunto si puede haber problemas adicionales con JDK 7 de 32 bits en Ubuntu de 64 bits. –

+1

@Petesh tiene el mismo problema, pero con una CPU de brazo. Me pregunto si hay libs para el brazo ... – Eugene

0

que estaba recibiendo la

bash:/usr/bin/java: No existe el fichero o directorio

El problema era que he instalado la versión i586 de Java en un x86_64 Debian.

La solución: la eliminé e instalé la versión x64 de Java. Todo está funcionando bien ahora.

Cuestiones relacionadas