Pregunta

Han pasado años desde que he trabajado en Java (esa es mi excusa).

Estoy tratando de iniciar una interfaz de usuario de Java Swing como un applet (anteriormente realizado a través del inicio web).

He modificado el archivo JNLP para reflejar los cambios que sé que son necesarios para un applet (por ejemplo, usando Applet-Desc en lugar de Application-DESC).

Dentro de <resources> Etiqueta en el archivo JNLP Establecimos propiedades del sistema como esta:

<property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>

En el método init de la clase principal, intentamos leer algunas de estas propiedades del sistema y siempre obtenemos "nulo" como valor.

  1. ¿Alguien tiene alguna idea por qué las propiedades del sistema no se "pegan"?

  2. Posiblemente extrañeza relacionada: tengo Java listo para abrir la consola cuando se ejecuta algo. Cuando cargo la página con este applet, las ventanas de la consola se abre dos veces, ambas ventanas que muestran los detalles de la carga del JNLP, pero solo una ventana continúa con la carga completa de la aplicación.

ACTUALIZAR:

Aquí está el archivo JNLP:

 <?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" >
  <information>
    <title>app</title>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
      <j2se version="1.6+" java-vm-args="-Xms128m -Xmx1024m -Xss1m"/>
      <property name="java.naming.factory.initial" value="org.jboss.naming.HttpNamingContextFactory"/>
      <property name="java.naming.factory.url.pkgs" value="org.jboss.naming:org.jnp.interfaces"/>
      <property name="java.naming.provider.url" value="$$context/invoker/JNDIFactory"/>
      <property name="java.security.policy" value="$$context/app/server.policy"/>
      <property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>
      <property name="login.context" value="client-login"/>
      <property name="jndi.port" value="1099"/>
      <property name="service.impl" value="Remote"/>
      <property name="polling" value="true"/>
      <jar href="cglib-2.1.3.jar"/>
      <jar href="com.jdas.apps.binmgmt.gui.jar" main="true"/>
      <jar href="commons-beanutils.jar"/>
      <jar href="commons-collections-2.1.1.jar"/>
      <jar href="commons-javaflow.jar"/>
      <jar href="commons-lang.jar"/>
      <jar href="commons-logging.jar"/>
      <jar href="ecs-1.4.1.jar"/>
      <jar href="hibernate3.jar"/>
      <jar href="itext-1.01.jar"/>
      <jar href="jade-5.2.3_AGRIS_PATCH.jar"/>
      <jar href="jbossall-client.jar"/>
      <jar href="jboss-j2ee.jar"/>
      <jar href="jcalendar-1.1.4-agris.jar"/>
      <jar href="jhall-3.1.3.jar"/>
      <jar href="looks-all-1.1.jar"/>
      <jar href="odmg-3.0.jar"/>
      <jar href="pvjdbc2.jar"/>
      <jar href="swing-layout-1.0.jar"/>
      <extension name="additional" href="unsigned.jnlp"/>
  </resources>
  <applet-desc main-class="com.jdas.apps.binmgmt.gui.main.BinManagementApp" name="binMgmt" width="1024" height="768" >

  </applet-desc>
</jnlp>
¿Fue útil?

Solución

Deberá firmar el archivo JNLP para establecer las propiedades del sistema (que no sean aquellas propiedades que tienen especiales exención). ¡Mira algunas de esas propiedades que estás tratando de establecer!

Para firmar un archivo JNLP, coloque una copia de byte por byte (mejor para seguir con US-ASCII (!)) En JNLP-Inf/Application.Jnlp antes de firmar el JAR.

Otros consejos

Acabo de pasar 2 días tratando de solucionar este problema, tratando de firmar frascos y otros archivos ... y luego encontré la solución que parece ser muy simple y está funcionando bien:

YO *Pon un Jndi.Properties-File con el siguiente contenido en mi Jre-Home-Director*Y (JRE7/lib):

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099

Tuve este problema al actualizar de Java 1.6 a Java 1.7 ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top