2012-05-16 9 views
7

ho fatto un'applicazione in JDK7, ma il jre6 è ancora in commercio, e se invio il mio file jar a qualcuno con jre6, non funzionerà, c'è un modo l'applicazione controlla la versione jre e, se non è compatibile, chiede all'utente di aggiornare ..come verificare la versione di jre usando l'applicazione java

+0

Ecco un [collegamento] (http://stackoverflow.com/questions/198431/how-do-you-compare-two-version-strings-in-java) come confrontare la versione di JRE. – Crazenezz

+0

@Crazenezz: c'è un modo per controllare attraverso dos, creando un file batch di Windows e di base virtuale, potrebbe essere fatto ?? se corrisponde allora eseguirà il barattolo ?? si può fare praticamente ciò che sto dicendo ?? – rahul

+0

Esiste la possibilità di farlo in batch. Puoi convertire l'algoritmo nel link che ho fornito sopra e tradurlo con lo stile di programmazione batch (se ti senti a tuo agio nell'utilizzarlo). – Crazenezz

risposta

9

È possibile utilizzare il metodo System.getProperty(String key); con "java.version" come chiave.

String version = System.getProperty("java.version"); 

uscita Esempio:

1.6.0_30 

I tasti disponibili possono trovare in here.

+0

funzionerà se jre sta mismatching ... perché nel mio caso il file jre dà solo lo splash screen e si chiude se uso jre6 .. ho bisogno di qualche soluzione folle !! – rahul

+0

puoi postare l'eccezione che sta mostrando –

+0

non mostrando alcuna eccezione ... il programma non funzionerà ... ho fatto una finestra di dialogo di errore di eccezione .....ma niente funziona .. – rahul

2
System.getProperty("java.version") 

Nota: Si tornerà la versione di JVM corrente, JVM su cui questo codice è in esecuzione, se si dispone di java6 & Java7 installato sul computer e si esegue questo codice su java 7 vi mostrerà la versione 7

+0

funzionerà se jre è mismatching ... perché nel mio caso il file jre dà solo lo splash screen e si chiude se uso jre6 .. ho bisogno di qualche soluzione folle !! – rahul

+0

potresti darci l'eccezione che mostra quando si chiude? –

+0

non ha dato alcuna eccezione .... non è in esecuzione ... ho fatto una finestra di errore in caso di qualsiasi eccezione .... quindi non ho mostrato nulla .... – rahul

0

qui è un example che controlla la versione e genera un'eccezione se la versione è in correggere utilizzando System.getProperty("java.version");

+0

funzionerà se jre è in errore ... perché nel mio caso il file jre dà solo lo splash screen e si chiude se uso jre6 .. ho bisogno di una soluzione folle !! – rahul

+0

Non riesco a verificarlo, ma se lo metti in una classe che viene caricata prima che vengano caricate tutte le classi specifiche di jre7, dovrebbe funzionare – Sibster

0

Utilizzo di Java Web Avvio si dispone di una finestra di messaggio sulla versione java se non è compatibile con il jar. Per esempio:

<resources> 
     <j2se version="1.4+" 
      href="http://java.sun.com/products/autodl/j2se" /> 

nel file JNLP

2
static public void main(String[] arg) throws IOException 
    { 
     PrintStream out = System.out; 
     Properties pro = System.getProperties(); 
     Set set = pro.entrySet(); 

     Iterator<Map.Entry<String , String >> itr = set.iterator(); 
     while(itr.hasNext()) 
     { 
      Map.Entry ent = itr.next(); 
      out.println(ent.getKey() + " -> " + ent.getValue() + "\n"); 
     } 
} 

Usa System.getProperty("java.version") o System.getProperty("java.runtime.version") per ottenere la versione di Java installata.
Il codice sopra snipped ti aiuta a trovare ulteriori dettagli come il nome java fornitore, OS ecc

0

UnsupportedClassVersionError si sarebbe verificato se si tenta di eseguire un file Java su una versione precedente di JRE rispetto alla versione su cui si era compilato.

java.lang.UnsupportedClassVersionError: Bad numero di versione nel file .class [at java.lang.ClassLoader.defineClass1 (Native Method)] su esecuzione di un file di classe Java compilato.

In sostanza non è possibile eseguire file .class compilati con una versione più recente della JVM.