2012-05-14 16 views
15

Tengo un problema con mi aplicación compilada de Java en Ubuntu. Lanza UnsupportedClassVersionError. Estoy compilando con una versión de JDK más alto que el que se configura en mi camino a ejecutar Java:Resolviendo el conflicto de versiones entre java y javac en Ubuntu

$ javac -version 
javac 1.7.0_147 

$ java -version 
java version "1.6.0_23" 
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2) 
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing) 

¿Cómo puedo resolver esto?

+2

puede preferir hacer esta pregunta en http://askubuntu.com/ De todas formas, comprobar lo paquetes de Java están instalados y si el JRE v1.7 se instala también puede que tenga que configurar qué versión usar con "alternativas" – Grims

+0

Alternativamente, intente compilar con '-target 1.6' o' -fuente 1.6'. –

Respuesta

6

Ejecutar cualquiera de los siguientes para localizar donde la ubicación es de ese

javac 1.7.0_147 

siendo utilizado de la siguiente manera:

whereis javac 

o

locate javac 

o

find javac 

Luego, una vez que has encontrado el directorio, simbólicamente y con fuerza vincular el contenido de la papelera a/usr/bin:

sudo ln -f -s [put location here]/bin/* /usr/bin 
+0

Tengo el mismo problema, pero cuando pruebo esto aparece un error nuevo y diferente: "demasiados niveles de enlaces simbólicos" – Paul

+1

-1, por favor no intente esta respuesta. Creo que debería ser deseleccionado como la respuesta aceptada. ¡Es muy probable que esto provoque un error irreversible en su máquina al crear enlaces simbólicos circulares en su directorio/usr/bin que no se pueden eliminar! – Paul

+0

@Paul Esta respuesta fue dirigida a una persona cuyo 'javac' era * no * en'/usr/bin'. Si '[poner ubicación aquí]/bin' resultó ser'/usr/bin' entonces el comando se convierte en algo completamente ridículo que deberías haber sabido: si hubieras tratado de entender esta solución en lugar de aplicarla a ciegas –

3

Esto es lo que quiere Java and Ubuntu. Tengo la misma configuración básicamente, pero estoy cambiando de Glassfish y Java7. Echar un vistazo y probar la configuración de su env Java de una manera similar

19

Tipo siguiente coomand en el terminal:

sudo update-alternatives --config java 

Se le preguntará por :

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection  Path           Priority Status 

    0   /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061  auto mode 

    1   /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061  manual mode 

    2   /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051  manual mode 


    Press enter to keep the current choice[*], or type selection number: 

que introduce 2 como quiero usar Java 1.7.0_21

13

También tendrá que hacer:

sudo update-alternatives --config javac 

Seleccione el compilador de Java que desee de la lista proporcionada. Por ejemplo en Centos 5

There are 2 programs which provide 'javac'. 
Selection Command 
----------------------------------------------- 
1   /usr/lib/jvm/java-1.6.0-openjdk/bin/javac 
*+ 2  /usr/lib/jvm/java-1.7.0-openjdk/bin/javac 
+2

Gracias ... - config ** javac ** funcionó aquí. – CoDe

+0

funcionó para mí .. Gracias –

Cuestiones relacionadas