start que example ejemplo descargar chrome java jar jnlp

que - java web start executable ibm download



Falta el atributo de manifiesto Codebase para: xxx.jar (4)

Cuando lanzo la aplicación desde jnlp recibo un mensaje

" Missing Codebase manifest attribute for:xxx.jar "

¿Qué significa?



Esto es lo que he encontrado:

PORQUE

A partir de Java 7 Update 51, Java ha mejorado el modelo de seguridad para que el sistema de usuario sea menos vulnerable a las explotaciones externas. La nueva versión de Java no permite a los usuarios ejecutar las aplicaciones que no están firmadas (sin firmar), autofirmadas (no firmadas por una autoridad confiable) y las aplicaciones a las que les faltan atributos de permiso.

Tengo el problema en el lanzamiento de TopCoder Arena. Se puede quitar fácilmente usando el siguiente enlace:

http://www.java.com/en/download/help/java_blocked.xml


Siguiendo la respuesta de Peter, esta es la forma de resolver el problema de forma automática, en caso de que esté utilizando Netbeans y JavaFX.

Netbeans 7.3.1 aún no tiene este "error" solucionado (no agrega el código base y los permisos al Manifest para usted). Si desea utilizar Netbeans para compilar el proyecto y no agregar manualmente los atributos faltantes (y volver a firmar el .jar), puede editar su build.xml y agregar los siguientes objetivos y macros ANT:

<target name="-post-jfx-jar"> <update-libs-manifest /> <update-jar-manifest jarfile="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}" /> </target> <macrodef name="update-libs-manifest"> <sequential> <property name="pp_rebase_dir" value="${basedir}${file.separator}${dist.dir}${file.separator}lib"/> <property name="pp_rebase_fs" value="*.jar"/> <condition property="manifest.codebase" value="${manifest.custom.codebase}" else="*"> <and> <isset property="manifest.custom.codebase" /> <not> <equals arg1="${manifest.custom.codebase}" arg2="" trim="true" /> </not> </and> </condition> <condition property="manifest.permissions" value="all-permissions" else="sandbox"> <isset property="permissions-elevated" /> </condition> <echo message="Updating libraries manifest => Codebase: ${manifest.codebase} / Permissions: ${manifest.permissions}" /> <script language="javascript"> <![CDATA[ var dir = project.getProperty("pp_rebase_dir"); var fDir = new java.io.File(dir); if( fDir.exists() ) { var callTask = project.createTask("antcall"); callTask.setTarget("-update-jar-macro-call"); var param = callTask.createParam(); param.setName("jar.file.to.rebase"); var includes = project.getProperty("pp_rebase_fs"); var fs = project.createDataType("fileset"); fs.setDir( fDir ); fs.setIncludes(includes); var ds = fs.getDirectoryScanner(project); var srcFiles = ds.getIncludedFiles(); for (i=0; i<srcFiles.length; i++) { param.setValue(dir + "${file.separator}" + srcFiles[i]); callTask.perform(); } } ]]> </script> </sequential> </macrodef> <target name="-update-jar-macro-call"> <update-jar-manifest jarfile="${jar.file.to.rebase}"/> </target> <macrodef name="update-jar-manifest"> <attribute name="jarfile"/> <sequential> <echo message="jarfile = @{jarfile}" /> <jar file="@{jarfile}" update="true"> <manifest> <attribute name="Codebase" value="${manifest.codebase}"/> <attribute name="Permissions" value="${manifest.permissions}"/> </manifest> </jar> </sequential> </macrodef>

Después de eso, solo tiene que agregar manifest.custom.codebase=<your_codebase> a su project.properties. Por ejemplo: manifest.custom.codebase=localhost

Atención: este código es para una aplicación JavaFX que utiliza el proceso de construcción ANT predeterminado de Netbeans. Deberá actualizarlo en consecuencia si ese no es su caso, eso requerirá un cambio en el primer objetivo ( <target name="-post-jfx-jar"> ), los nombres de las propiedades y la condición que verifica los permissions-elevated Propiedad permissions-elevated .


También encontré esto al ejecutar una aplicación interna después de actualizar mi JRE a 1.7u25. Las advertencias aparecen debido a una nueva función de seguridad introducida en 1.7u25 para evitar la reutilización no autorizada del código. En mi caso, también se me presentó un cuadro de diálogo que me pedía que confirmara que quería que la aplicación tuviera acceso a mi PC.

Si tiene acceso al archivo jar, agregue dos atributos: Permissions y Codebase . Debe decidir si la aplicación requiere acceso a todo en la PC, en cuyo caso usaría el valor de all-permissions para el atributo Permissions . De lo contrario, use sandbox y el JRE restringirá el nivel de acceso del código en la PC. Codebase probable que la base de código deba ser la misma que la base de código para el archivo jnlp, a menos que el archivo jar se esté descargando de una URL diferente, en cuyo caso debe ser esa URL.

Referencia: documentación de Java 7 de Oracle.