PDA

View Full Version : [Java] Passaggio da jdk6 a jdk5 problemi


Abdujaparov
12-10-2007, 16:17
Salve a tutti devo mettere il jdk5 al posto del 6 dato che ho alcune applicazioni che in caso contrario non mi partirebbero però ora mi ritrovo dei problemi abbastanza rognosi sia con eclipse che con la linea di comando.
Parto dalla cosa più semplice, il path.
Ho tolto dal path il percoso del jdk6 (che ho tutt'ora installato, ma togliendolo dal path pensavo di evitare che venisse usato) ed ho inserito il path del jdk5.
Ora se do "javac -version" mi compare "java version 1.5.0_09", cosa che mi sta benissimo e voglio.
Se invece do "java -version" mi viene risposto "java version 1.6.0_02" e questo è male, come posso fare a fargli prendere java5 e non java6?
Io ho windows vista, nel percoso del path non c'è il percorso di java6 ma solo quello di java5.
Altri problemi li ho con eclipse, in particolare con un progetto in cui uso jdom1.0.
Ho scritto una classe che scrive su un file xml, con java6 la classe veniva compilata e partiva senza problemi, con java5 se provo ad usarla mi viene dato questo errore:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at xml.JDomProva.<init>(JDomProva.java:34)
at Prova.main(Prova.java:20)


Le classi jdom che utilizzo sono in un file jdom.jar che, seguendo le istruzioni, ho generato con ant (quando ancora avevo java6 e non java5).
Il problema che mi viene dato può dipendere dall'aver usato ant con java 5 per generare il jar?
Grazie a tutti, arrivederci, ciao ciao.

PGI-Bis
12-10-2007, 20:33
La compatibilità delle applicazioni Java è relativamente direzionale, nel senso che a meno di usare delle new entry, ciò che compili con una versione precedente viene eseguito su una versione successiva ma non il contrario.

L'eccezione che incontri, quel Bad version number, deriva dal formato dei file ".class" i quali includono un timbro che identifica la versione di java usata per la compilazione. In particolare, quell'eccezione ti segnala il tentativo di eseguire una classe compilata con Java 6 su una piattaforma Java minore: devi ricompilare il sorgenti se vuoi eseguirlo su Java 5. Puoi farlo anche con il javac della versione 6 usando l'opzione:

javac -source 5 -target 5 [il resto]

Per quanto riguarda la rimozione di Java, su Windows l'installazione del JRE modifica il registro di sistema (che credo abbia anche Vista). Devi andare nel pannello di controllo -> installazione applicazioni (o l'equivalente di Vista) e rimuovere il JRE 6. Nota che puoi tenere il JDK 6 ed usare quello per eseguire i programmi Java 6. Il JDK infatti include un JRE detto "privato" il quale può essere usato previa impostazione della path (es. c:\programmi\java\jdk1.6.0\jre\bin) o tramite invocazione diretta (c:\programmi\java\jdk1.6.0\jre\bin\java.exe eccetera).

Abdujaparov
13-10-2007, 07:46
Ciao, ho riprovato a ricompilare i file .java con java5 ma il problema persiste ugualmente, perchè un simile comportamente?
Ci sto perdendo un sacco di giorni con questo problema senza riuscire a capire come risolvere, cosa posso fare?
Grazie mille a tutti, ciao ciao.

PGI-Bis
13-10-2007, 08:52
Il perchè è sempre quello. C'è almeno un file class compilato per una versione di Java superiore a quella con cui stai cercando di eseguire il programma.

Radi al suolo tutti i JRE e JDK che hai. Elimina tutti i file class che hai compilato e tieni solo i sorgenti. Dopodichè installi il JDK 5 senza installare il JRE pubblico. A quel punto compili tutto e sei a posto. Devi essere a posto.

^TiGeRShArK^
13-10-2007, 09:30
Ciao, ho riprovato a ricompilare i file .java con java5 ma il problema persiste ugualmente, perchè un simile comportamente?
Ci sto perdendo un sacco di giorni con questo problema senza riuscire a capire come risolvere, cosa posso fare?
Grazie mille a tutti, ciao ciao.

devi ribuildare jdom con java 5 e anche tutti gli altri eventuali .java che hai precedentemente comiplato con java 6.
Ma secondo me fai prima a scaricarti il jar dal sito sinceramente :D

Abdujaparov
13-10-2007, 10:46
Ho provato a ricompilare jdom con java5 ma sempre problemi a questo punto per evitare di perdere tempo ho anticipato la formattazione vediamo se adesso va.
Ciao ciao.