it-swarm.com.ru

Приложение Java jnlp заблокировано настройками безопасности

У меня есть корпоративное Java-приложение, в котором есть множество jar-файлов, которые загружаются в jvm-кеш клиента с помощью jnlp-файла. Когда я запускаю приложение, я получаю следующую трассировку стека на консоли 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.

Мой файл JNLP похож на следующее с некоторыми цензурными описаниями:

<?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" />

Также обратите внимание, что я получаю некоторые другие подробности исключений на дополнительной информационной панели:

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

У меня нет никаких ограничений безопасности для безопасности на панели управления Java. Это на среднем уровне следующим образом: here

Спасибо за любую помощь

Новое редактирование: я получил более объяснительную трассировку стека, когда попытался запустить этот jnlp с машины jvm 1.6 следующим образом:

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

Я исправил это, зайдя в панель управления Java («Пуск»> «Все программы»> «Java»> «Настроить Java») и добавив два URL-адреса в список «Редактировать сайт безопасности». 

http://code.google.com

http://androidscreencast.googlecode.com

Для Mac Системные настройки> Java

Где добавить эти сайты

Панель управления Java> Вкладка «Безопасность»> Изменить список сайтов> Добавить> Применить> Ok enter image description here

15
turbandroid

Я рекомендую вам включить трассировку и ведение журнала, смотрите здесь как:

enter image description here

А затем запустите приложение из командной строки.

javaws -verbose AppName.jnlp

Затем вы можете проверить наличие подсказок в файлах журнала и трассировки, хранящихся по этому пути

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

источник img:

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

3
Hernán Eche

Я пытался добавить элемент file:/ и работал. 

 enter image description here

3
MirlvsMaximvs

Мы видели эту проблему с Java 1.8u60, вызванную мертвыми ссылками на иконки в файле JNLP. Ранее отсутствующие значки игнорировались, но теперь мы видим ошибки в трассировке стека в вопросе. Удаление ссылок на иконки исправило нашу проблему.

Вот две ссылки, которые мы удалили:

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

Надеюсь, это поможет.

1
Stephen M

Вы также можете попробовать установить флажок на вкладке «Дополнительно» в Java (на панели управления) и установить флажок «Всегда разрешать» в разделе «Файл JNLP».

0
rinilnath

В Arch Linux system я обнаружил, что Java Control Panel доступна по адресу /opt/Java7/jre/bin/ControlPanel (символическая ссылка на jcontrol). Запустив его, я смог получить доступ к вкладке Security, а затем опустил уровень безопасности до Medium. Затем мне предлагается принять предупреждение о безопасности при запуске чего-то вроде /opt/Java7/bin/javaws.

0
Micah Elliott

У меня была очень похожая проблема ( Правильно подписанное приложение JNLP не может работать в Java 7 )

Я исправил это, убедившись,

  • Я скомпилировал с использованием 1.7
  • Я обновил свой файл JNLP, чтобы применить 1.7

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

0
YanisTheYak