start que ejemplo descargar chrome java java-web-start jnlp

java - que - jnlp chrome



¿Cómo soluciono “falta el código de base, los permisos y el atributo de manifiesto del nombre de la aplicación” en mi aplicación JNLP? (5)

Muestra para agregar manifest a jar y firmar jarras.

<target name="-post-compile"> <jar destfile="${build.web.dir}/jars/app.jar" > <fileset dir="${build.classes.dir}"> <include name="com/sample/test/client/**/*.*"/> <include name="com/sample/test/share/**/*.*"/> </fileset> <manifest> <attribute name="Author" value="${user.name}"/> <attribute name="Permissions" value="all-permissions"/> <attribute name="Codebase" value="http://localhost:8080/app/"/> <attribute name="Application-Name" value="App"/> </manifest> </jar> <signjar keystore="app.keystore" storepass="test" jar="${build.web.dir}/jars/app.jar" alias="tomcat" /> <copyfiles files="${file.reference.javadatepicker.jar}" todir="${build.web.dir}/jars"/> <delete dir="${build.web.dir}/WEB-INF/classes/com/sample/app/client"/> <!--keytool -genkey -alias tomcat -keystore app.keystore -keypass test -storepass test -validity 1960--> <signjar keystore="app.keystore" storepass="test" jar="${build.web.dir}/jars/javadatepicker.jar" alias="tomcat" /> </target>

Con las actualizaciones recientes de Java, muchas personas tienen problemas con sus aplicaciones Java Web Start que carecen de los atributos de Codebase , Permissions y Application-name . Aunque hay recursos disponibles para ayudarlo a lograr esto, no pude encontrar ninguna respuesta completa a esta pregunta, así que sentí que un Q-and-A sería bueno. Entonces, aquí está la pregunta:

La aplicación My Java Web Start muestra las siguientes advertencias en la consola:

Missing Permissions manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar Missing Codebase manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar Missing Application-Name manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar

¿Cómo puedo solucionar esto?


Otra forma podría ser manejarlo en su propio script de compilación.

Paso 1: definir un objetivo para actualizar

<target name="updateManifest"> <manifest file="${file}" mode="update"> <attribute name="Trusted-Only" value="true"/> <attribute name="Permissions" value="all-permissions"/> <attribute name="Codebase" value="*"/> </manifest> </target>

Paso 2: llame al objetivo de actualización y use el nuevo manifiesto en el tarro

<ant target="updateManifest"> <property name="file" location="manifest.use" /> </ant> <jar jarfile="${jar_name}.jar" manifest="manifest.use"> <fileset dir="${dest}"> <include name="File1" /> </fileset> </jar>


Si el mensaje de error se ve así:

Missing Application-Name manifest attribute for: server root/filename.jar

Puedes resolverlo de esta manera:

  1. control panel inicio

  2. Elija Java Control Panel

  3. Seleccione Security pestaña de Security

  4. En la Exception Site list haga clic en el botón Edit Site List

  5. Haga clic en el botón Add .

  6. Escriba la raíz del servidor (por ej .: https://ibank.cib.hu ), y presione OK

  7. Reinicie su navegador / aplicación.

Recurso aquí.


Si usa Netbeans, establezca esos atributos en su archivo nbproject / project.properties:

  • manifest.custom.codebase
  • manifest.custom.permissions
  • manifest.application.name.attribute

El último solo es compatible con Netbeans> = 8.0 (ver here ). Los otros deberían trabajar incluso en Netbeans 7.2. También puse jnlp.mixed.code a trusted_only pero tal vez no sea apropiado en su caso. Puede modificar su archivo jnlp-impl.xml bajo su propio riesgo si no puede cambiar a una versión más reciente de Netbeans.

La sugerencia de Atulsm es mejor si no usas Netbeans.


(1) Primero, debe crear un archivo de texto con todos los atributos que desea agregar. Mi archivo de texto se ve así:

Permissions: all-permissions Codebase: http://www.codebase.com/myApp/dist Application-Name: My Application

Lo nombré addToManifest.txt . Obviamente, deberá cambiar los parámetros para que coincidan con las necesidades de su aplicación.

(2) A continuación, debe agregar esto al .jar principal y también a todas las bibliotecas. El comando para hacer esto es:

jar ufm dist/myApp.jar addToManifest.txt

por supuesto, dist/myApp.jar deberá apuntar a lo que sea su principal .jar. También necesitarás hacer esto para todas las bibliotecas también.

jar ufm dist/lib/jcommon-1.0.16.jar addToManifest.txt jar ufm dist/lib/jfreechart-1.0.13.jar addToManifest.txt jar ufm dist/lib/joda-time-2.2.jar addToManifest.txt ...

(Nota: en Windows, escribí un archivo .bat para esto).

Una vez que haga esto, los atributos deben escribirse en .jar s. Puede abrir .jars en un administrador de zip (como 7-Zip), extraer el archivo MANIFEST.MF , abrirlo en un editor de texto y debería ver los atributos enumerados.

(3) Después de agregar los atributos, debe renunciar a su aplicación. El comando para hacer eso es:

jarsigner dist/myApp.jar -keystore "C:/myApp/KEYSTORE.ks" alias -storepass password

También necesitarás hacer esto para todas tus bibliotecas también:

jarsigner dist/lib/jcommon-1.0.16.jar -keystore "C:/myApp/KEYSTORE.ks" alias -storepass password jarsigner dist/lib/jfreechart-1.0.13.jar -keystore "C:/myApp/KEYSTORE.ks" alias -storepass password jarsigner dist/lib/joda-time-2.2.jar -keystore "C:/myApp/KEYSTORE.ks" alias -storepass password

Después de eso, tus atributos deberían agregarse y tus .jar deberían estar firmados.

NOTA: solo necesita firmar / implementar sus bibliotecas una vez, a menos que esté cambiando la estructura de la biblioteca. es decir, si está actualizando su aplicación pero a las bibliotecas ya se les han alterado, firmado correctamente e implementado sus manifiestos, no tendrá que renunciar / implementar las bibliotecas a menos que esté agregando / eliminando bibliotecas de su aplicación.

NOTA # 2: La versión actual de Netbeans agregará los atributos Codebase y Permissions manifest solo a su archivo .jar primario , pero no a sus bibliotecas. Si usa Netbeans, recibirá una advertencia de la utilidad jar cuando intente agregar un atributo de manifiesto duplicado. Hay un informe de error en la cola para corregir este https://netbeans.org/bugzilla/show_bug.cgi?id=234231 .

EDITAR: La última versión de Netbeans (8.0) ahora agrega los tres ( Codebase , Permissions y Application-Name ) al manifiesto para usted.