2011-02-10 30 views
5

Estoy ejecutando una aplicación desde un archivo jnlp que contiene información útil, como el proveedor, una descripción y otro campo.Obtenga información actual de JNLP

¿Cuál es la forma más razonable de obtener estos datos en Runtime para crear un cuadro de diálogo "Acerca de"?

¿Hay alguna forma de detectar que la aplicación se ha iniciado sin Java Web Start?

Gracias por su ayuda.

Pierre

+1

¿Por qué no puedes copiar esto en la aplicación junto con el archivo JNLP y llevarlo desde allí? –

Respuesta

5

Existen varias estrategias para lograr el objetivo deseado. No volveré a visitar los ya mencionados, sino que esbozaré varios más.


1) La información puede ser colocado en el manifiesto de un archivo. Se puede recuperar utilizando los métodos de la clase java.lang.Package.

String title = pckg.getImplementationTitle(); 
String vendor = pckg.getImplementationVendor(); 
String version = pckg.getImplementationVersion(); 

clase El paquete también tiene la capacidad de identificar todos cargado paquetes.

Package[] package = Package.getPackages(); 

Itere que busca sus paquetes y puede obtener una lista de todos los paquetes actualmente cargados.

La mejor manera de poner la información en los manifiestos es usando Ant o alguna herramienta de compilación similar. De esa forma, la versión se puede configurar a la fecha, es fácil de hacer.


2) Agregue una propiedad a la sección de recursos del JNLP.

<resources> 
    .. 
    <property name="jnlp.href" value="${href}" /> 
    .. 
</resources> 

cierto - que el uso de ${href} pretende significar la misma cadena exacta utilizada como el atributo href JNLP.

Utilice el método BasicService.getCodeBase() para obtener la base de código. Forma una URL para el archivo JNLP usando ..

URL urlToJnlp = new URL(
    basicService.getCodeBase(), 
    System.getProperty("jnlp.href")); 

carga el archivo JNLP y analizarlo usando uno de la gran cantidad de API XML de J2SE. (Y si no se carga en las API XML de J2SE, indica claramente que no es válido o está mal formado, y debe verificarse usando una herramienta como JaNeLA).

Una vez cargado y analizado, la información básica se puede obtener & presentado.

2

Puede detectar si la aplicación se puso en marcha utilizando WebStart mediante la comprobación de la disponibilidad de los servicios de JNLP. Algo así como:

public boolean launchedByJNLP(){ 
    try { 
     ServiceManager.lookup("javax.jnlp.BasicService"); 
    } catch (UnavailableServiceException e) { 
     return false; 
    } 

    return true; 
} 

En cuanto a la obtención de información para una jnlp Acerca de diálogo, creo que la mejor solución es incluir toda la información que desea en su diálogo acerca de un complejo bien separadas archivo empaquetado con la aplicación.

Cuestiones relacionadas