web-dev-qa-db-fra.com

Application jnlp Java bloquée par les paramètres de sécurité

J'ai une application Java d'entreprise qui contient de nombreux fichiers jar téléchargés dans le cache jvm du client par un fichier jnlp. Lorsque je lance l'application, la trace de pile suivante est obtenue sur la console Java:

        Exception in thread "AWT-EventQueue-1" Java.lang.NullPointerException
at com.Sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.Sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.Sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at Java.awt.event.InvocationEvent.dispatch(Unknown Source)
at Java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at Java.awt.EventQueue.access$200(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at Java.awt.EventQueue.dispatchEvent(Unknown Source)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.run(Unknown Source)
       Exception in thread "AWT-EventQueue-1" Java.lang.NullPointerException
at com.Sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.Sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.Sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at Java.awt.event.InvocationEvent.dispatch(Unknown Source)
at Java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at Java.awt.EventQueue.access$200(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at Java.awt.EventQueue.dispatchEvent(Unknown Source)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.run(Unknown Source)
    #### Java Web Start Error:
    #### The Java security settings have prevented this application from running. You may change this behavior in the Java Control Panel.

Mon fichier JNLP ressemble à ce qui suit avec quelques descriptions censurées:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://10.100.10.9/ikarusdelhitest/" href="ikarus.jnlp">
<information>
    <title>ikarus</title>
    <vendor>my company</vendor>
    <homepage href="http://www.mycompanyaddress.com" />
    <description>My enterprise Java ee swing application</description>
    <icon href="ikarus.jpg" />
    <offline-allowed />
</information>
<security>
    <all-permissions />
</security> 
<resources> 
    <jar href="jars/ikarus/ikarusClient.jar" />
    <jar href="jars/ikarus/ikarusDelegators.jar" />
    <jar href="jars/ikarus/clientRules.jar" />
    <jar href="jars/ikarus/ruleImps.jar" />
    <jar href="jars/ikarus/ikarusUtil.jar" />
    <jar href="jars/ikarus/ikarusResources.jar" />
    <jar href="jars/ikarus/domain.jar" />
    <jar href="jars/ikarus/domain_repository.jar" />
    <jar href="jars/ikarus/domain_service.jar" />
    <jar href="jars/ikarus/app_repository.jar" />
    <jar href="jars/ikarus/app_service.jar" />
    <jar href="jars/ikarus/infrastructure.jar" />
    <jar href="jars/ikarus/integration_domain.jar" />
    <jar href="jars/jboss_ejb_auth/ejb3-persistence.jar" />
    <jar href="jars/jboss_ejb_auth/jboss-ejb3x.jar" />
    <jar href="jars/jboss_ejb_auth/jbossall-client.jar" />
    <jar href="jars/jasper/commons-beanutils-1.8.0.jar" />
    <jar href="jars/jasper/commons-collections-3.2.1.jar" />
    <jar href="jars/jasper/commons-digester-1.7.jar" />
    <jar href="jars/jasper/commons-logging-1.1.jar" />
    <jar href="jars/jasper/iText-2.1.0.jar" />
    <jar href="jars/jasper/jasperreports-3.6.0.jar" />
    <jar href="jars/jasper/poi-3.2-FINAL-20081019.jar" />
    <property name="jnlp.localization" value="Delhi"/>
</resources>
<application-desc main-class="com.celebi.ikarus.main.Ikarus" />

Notez également que je reçois des détails sur les exceptions différentes sur le panneau plus d'informations:

com.Sun.deploy.security.BlockedException: The Java security settings have prevented this application from running. You may change this behavior in the Java Control Panel.
at com.Sun.deploy.security.SandboxSecurity.showBlockedDialog(Unknown Source)
at com.Sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
at com.Sun.javaws.security.AppPolicy.addPermissions(Unknown Source)
at com.Sun.jnlp.JNLPClassLoader.getTrustedCodeSources(Unknown Source)
at com.Sun.deploy.security.CPCallbackHandler$ParentCallback.strategy(Unknown Source)
at com.Sun.deploy.security.CPCallbackHandler$ParentCallback.openClassPathElement(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at com.Sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at com.Sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.Sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at com.Sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.access$100(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at com.Sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at com.Sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.Sun.javaws.Launcher.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by: Java.lang.SecurityException: Invalid Permissions value: all-permissions  
at com.Sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
at com.Sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
... 39 more

Je n'ai aucune restriction de sécurité pour la sécurité sur le panneau de configuration Java. C'est au niveau moyen comme suit: here

Merci pour toute aide

Nouvelle édition: j’ai eu plus de pile d’explication lorsque j’ai essayé d’exécuter ce jnlp à partir d’une machine jvm 1.6 comme suit:

Java.lang.NoClassDefFoundError: javax/ejb/EJBAccessException
at Java.lang.Class.getDeclaredMethods0(Native Method)
at Java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at Java.lang.Class.getMethod0(Unknown Source)
at Java.lang.Class.getMethod(Unknown Source)
at com.Sun.javaws.Launcher.executeApplication(Unknown Source)
at com.Sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.Sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.Sun.javaws.Launcher.run(Unknown Source)
at Java.lang.Thread.run(Unknown Source)
Caused by: Java.lang.ClassNotFoundException: javax.ejb.EJBAccessException
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at com.Sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
13
ali kerim erkan

J'ai résolu ce problème en allant dans le Panneau de configuration Java (Menu Démarrer> Tous les programmes> Java> Configurer Java) et en ajoutant deux URL à la liste de sécurité Security Edit Site. 

http://code.google.com

http://androidscreencast.googlecode.com

Pour les préférences système Mac> Java

Où ajouter ces sites

Panneau de configuration Java> Onglet Sécurité> Modifier la liste de sites> Ajouter> Appliquer> Ok enter image description here

15
turbandroid

Je vous recommande d'activer le traçage et la journalisation, voyez ici comment:

enter image description here

Et puis exécutez l'application à partir de la ligne de commande.

javaws -verbose AppName.jnlp

Ensuite, vous pouvez rechercher des indices dans les fichiers de log et de trace stockés dans ce chemin

\Documents and Settings\<USERNAME>\Application Data\Sun\Java\Deployment\log

img source:

http://www.Cisco.com/c/en/us/support/docs/security/hostscan/117097-trouble-Java7-00.html

3
Hernán Eche

J'ai essayé d'ajouter l'élément fichier:/ et j'ai travaillé. 

 enter image description here

3
MirlvsMaximvs

Nous avons vu ce problème avec Java 1.8u60 causé par des références mortes aux icônes dans le fichier JNLP. Auparavant, les icônes manquantes étaient ignorées, mais nous constatons maintenant des problèmes avec la trace de pile dans la question. La suppression des références aux icônes a résolu notre problème.

Voici les deux références que nous avons supprimées:

<icon href="ORCL.jpg" kind="splash"/>
<icon href="ORCS.jpg" kind="default"/>

J'espère que cela pourra aider.

1
Stephen M

Vous pouvez également essayer d'activer la case à cocher sous l'onglet Avancé de Java (dans le panneau de configuration) et cochez l'option Toujours autoriser sous la section du fichier JNLP

0
rinilnath

Sur un système Arch Linux , j’ai trouvé que le panneau de configuration Java était accessible à /opt/Java7/jre/bin/ControlPanel (un lien symbolique vers jcontrol). En l'exécutant, je pouvais accéder à l'onglet Security, puis redimensionner le niveau de sécurité sur Medium. Je suis ensuite invité à accepter un avertissement de sécurité au démarrage de quelque chose comme /opt/Java7/bin/javaws.

0
Micah Elliott

J'ai eu un problème très similaire ( L'application JNLP correctement signée n'a pas pu s'exécuter en Java 7 )

Je l'ai réparé en m'assurant

  • J'ai compilé en utilisant 1.7
  • J'ai mis à jour mon fichier JNLP pour appliquer 1.7

    <ressources>
    <j2se version = "1.7 *" Java-vm-args = "- Xmx32m" max-heap-size = "32m" href = "http://Java.Sun.com/products/autodl/j2se" />

0
YanisTheYak