D:\marco\Lavoro\Java\esercizi\Capitolo 05>java TestGara
Exception in thread "main" java.lang.UnsupportedClassVersionError:
TestGara (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
I miei programmi non hanno caratteristiche specifiche della versione
1.6, significa che un programma compilato con versioni superiori non
può girare su JVM inferiori (spero di no !!!) ?
Se sì: potrei installare sul pc entrambe le JVM e forzare l'utilizzo
alternativamente di una o dell'altra a seconda della necessità ?
Se no: cosa devo modificare ?
Grazie 1000
mc
Ovviamente sì, in caso contrario per quale motivo rilascerebbero diverse
versioni successivi, solo per fare piccoli cambiamenti alla sintassi del
linguaggio?
Se controlli sul sito della sun troverai elencate tutte le modifiche,
versione per versione.
> Se sì: potrei installare sul pc entrambe le JVM e forzare l'utilizzo
> alternativamente di una o dell'altra a seconda della necessità ?
Sotto windows puoi installare versioni diverse di Java, e utilizzare
quella che ti serve specificando sempre il path della versione prima del
comando.
es.
c:\jdk\jdk1.4\javac
c:\jdk\jdk1.6\java
Ovviamente devi usare la stessa versione per compilare ED eseguire una
classe.
Ciao,
Paolo
> I miei programmi non hanno caratteristiche specifiche della versione
> 1.6, significa che un programma compilato con versioni superiori non
> può girare su JVM inferiori (spero di no !!!) ?
parametri -source e - target di javac
Il suo problema non è la compilazione, è il far girare il compilato con
una versione precedente.
Ciao,
Paolo
Essendo un po' nuovo, non ho capito al 100%, provo a mettere un po' di
cose ...
Variabili d'ambiente
Path
C:\Programmi\Nmap;C:\Programmi\Java\j2re1.4.2_07\bin;C:\Programmi
\GnuWin32\bin;C:\Programmi\Java\jdk1.6.0_03\bin
CLASSPATH
.;C:\Programmi\Java\j2re1.4.2_07\lib\ext\QTJava.zip
Source
public class TestGara {
public static void main (String args[]) {
Gara imola = new Gara("GP di Imola");
imola.corriGara();
String risultato = imola.getRisultato();
System.out.println(risultato);
}
}
Però ovviamente mancano le altre classi a cui si fa riferimento (per
brevità!).
Lancio javac senza parametri aggiuntivi
> Il suo problema non è la compilazione, è il far girare il compilato con
> una versione precedente.
esattamente. basta che compili nel modo giusto.
> Lancio javac senza parametri aggiuntivi
javac -source 1.4 .....
Esattamente. Più precisamente,
javac -source 1.4 -target 1.4 mioSorgente.java
Dopo aver installato per anni 4-5 versioni diverse di java, ho scoperto
che si poteva fare così...
Scusa (anche a Marco) hai perfettamente ragione.
Leggendo il post originario per qualche bizzarro motivo avevo pensato al
caso opposto: compilazione da una versione per una successiva, non
precedente.
Ciao,
Paolo
Grazie a tutti per le risposte!
Credo di aver equivocato il famoso concetto di compatibilità verso il
basso: NON significa che qualcosa compilato in una ver superiore possa
girare in una inferiore, ma l'esatto contrario!
Ci proverò.
Funziona!
Occhio,Rischi in esecuzione comunque delle incompatibilita',es:
<java>
public class TestCC {
public static void main(String[] args) {
System.out.println(System.nanoTime());
}
}
</java>
> java -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode)
> javac.exe -source 1.4 -target 1.4 TestCC.java
> java -version
java version "1.4.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)
Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)
> java TestCC
> java TestCC
Exception in thread "main" java.lang.NoSuchMethodError:
java.lang.System.nanoTim
e()J
at TestCC.main(TestCC.java:3)
Soluzione
"It is important to use -bootclasspath and -extdirs when cross-compiling
...
javac -target 1.5 -bootclasspath jdk1.5.0\lib\rt.jar \
-extdirs "" OldCode.java"
http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html#crosscomp-example
--
Marco
--
Posted via a free Usenet account from http://www.teranews.com