2012-05-16 28 views
7

he hecho una aplicación en JDK7, pero la jre6 todavía está siendo utilizada en el mercado, y si envío mi archivo jar a alguien con jre6, no funcionará, ¿hay alguna manera de hacerlo? la aplicación verifica la versión jre y si no es compatible, pida al usuario que actualice ...cómo verificar la versión de jre usando la aplicación java

+0

Aquí hay un [enlace] (http://stackoverflow.com/questions/198431/how-do-you-compare-two-version-strings-in-java) cómo comparar la versión de JRE. – Crazenezz

+0

@Crazenezz: ¿hay alguna manera de verificar a través de dos, creando un archivo de lote de Windows y básico virtual, podría hacerse esto? si coincide, ¿ejecutará el frasco? ¿Esto puede hacerse prácticamente, lo estoy diciendo? – rahul

+0

Existe la posibilidad de hacer eso en lote. Puede convertir el algoritmo en el enlace que doy arriba y traducirlo con el estilo de programación por lotes (si se siente cómodo al usarlo). – Crazenezz

Respuesta

9

Puede usar el método System.getProperty(String key); con "java.version" como clave.

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

Ejemplo de salida:

1.6.0_30 

Las teclas disponibles se pueden encontrar en here.

+0

funcionará si jre no coincide ... porque en mi caso el archivo jre simplemente da la pantalla de bienvenida y se cierra solo si uso jre6 ... necesito una solución a prueba de tontos !! – rahul

+0

puede publicar la excepción que muestra –

+0

no muestra ninguna excepción ... el programa no se ejecutará ... hice un cuadro de diálogo de error de excepción .....pero nada funciona .. – rahul

2
System.getProperty("java.version") 

Nota: Se devolverá la versión de JVM actual, JVM en el que se ejecuta el código, si usted tiene java6 & Java7 instalado en su equipo y está ejecutando este código en java 7 le mostrará la versión 7

+0

funcionará si jre no coincide ... porque en mi caso el archivo jre simplemente da la pantalla de bienvenida y se cierra solo si uso jre6 ... necesito una solución a prueba de tontos !! – rahul

+0

¿podría darnos la excepción que se muestra cuando se cierra? –

+0

no está dando ninguna excepción ... simplemente no se está ejecutando ... he hecho un cuadro de diálogo de error en caso de alguna excepción .... por lo tanto, no he mostrado nada ... – rahul

0

aquí hay un example que comprueba la versión y selecciona una excepción si la versión está en correcto usando System.getProperty("java.version");

+0

funcionará si jre no coincide ... porque en mi caso el archivo jre simplemente da la pantalla de bienvenida y se cierra solo si uso jre6 ... ¡¡necesito alguna solución a prueba de tontos !! – rahul

+0

No puedo verificarlo en atm, pero si lo pones en una clase que se carga antes de que se carguen las clases específicas de jre7, debería funcionar – Sibster

0

Usando Java Web Start tiene un cuadro de mensaje sobre la versión java si no es compatible con su jar. Por ejemplo:

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

en el archivo 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"); 
     } 
} 

Uso System.getProperty("java.version") o System.getProperty("java.runtime.version") obtener la versión de Java instalada.
El código anterior snipped ayuda a encontrar más detalles tales como el nombre del proveedor de Java, etc. OS

0

UnsupportedClassVersionError ocurriría si se intenta ejecutar un archivo Java en una versión anterior de JRE en comparación con la versión en la que estaba compilado.

java.lang.UnsupportedClassVersionError: número de versión de Bad en el archivo .class [en java.lang.ClassLoader.defineClass1 (Método Nativo)] sobre la ejecución de un archivo de clase Java compilado.

En esencia, no puede ejecutar archivos .class compilados con una versión más reciente que la JVM.

Cuestiones relacionadas