2016-05-16 4 views
-1

У меня возникает следующее исключение при запуске приложения Gluon через webstart ... Я понимаю, что это не частица GLUON, непосредственно связанная ... похоже, проблема с знаком jar. Исключение:Исключение при запуске gluon-приложения в Интернете Начало

java.lang.RuntimeException: java.lang.ExceptionInInitializerError 
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.instantiateApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ExceptionInInitializerError 
at com.gluonhq.particle.application.Particle.<init>(Particle.java:170) 
at com.gluonhq.particle.application.ParticleApplication.<init>(ParticleApplication.java:89) 
at mx.gob.scjn.inventario.InventarioAJ.<init>(InventarioAJ.java:22) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$1.run(Unknown Source) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$500(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$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.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) 
Caused by: java.lang.IllegalStateException: Toolkit not initialized 
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(Unknown Source) 
    at javafx.scene.control.Control.<clinit>(Unknown Source) 
... 28 more 

Я уже создаю свои сертификаты с помощью:

keytool -genkey -keyalg rsa -alias CLS -keystore mykeyStorte 

затем экспортировать его:

keytool -export -alias CLS -file rsatest.cer -keystore mykeyStore 

Я импортирован в панель управления Java и подписать банку с помощью:

jarsigner -keystore mykeyStore InventarioAJ.jar CLS 

Очевидно, что я что-то упускаю ... ¿Любая подсказка? Приветствие Получив ответ, я получил знак «дублирования вопроса» ... но правильный ответ не является (как я думал) ТОЛЬКО сторона безопасности/подписания ... на самом деле настоящая и важная часть Ответ должен быть связан с тем, что класс Application нельзя использовать в качестве апплета и запрашивает другое изменение в файле JNLP.

+0

Проверьте это [link] (https://bugs.openjdk.java.net/browse/JDK-8153350) и посмотрите, не помогает ли она –

+0

Спасибо, Хосе ... это дало мне свет. –

+0

@JarrodRoberson Я обновил вопрос, надеюсь, вы увидите, что это не та же проблема. –

ответ

0

Правильно, Java 8 вводит некоторые изменения в JavaFX (я действительно думаю, что эти изменения были в более позднем обновлении, но это не так). Как-то сегодня приложение JavaFX не может вести себя как апплет, поэтому JNLP файл должен выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="http://localhost/inventarioaj/" href="InventarioAJ.jnlp"> 
<resources> 
    <j2se version="1.8+" href= 
     "http://java.sun.com/products/autodl/j2se"/> 
    <jar href="/inventarioaj/InventarioAJ.jar" main="true" /> 
    <jar href="lib/controlsfx-8.40.10.jar"/> 
    <jar href="lib/javax.inject-1.jar"/> 
    <jar href="lib/particle-1.1.0.jar"/> 
    <jar href="lib/h2-1.4.191.jar"/> 
    <jar href="lib/eclipselink.jar"/> 
    <jar href="lib/javax.persistence_2.1.0.v201304241213.jar"/> 
    <jar href="lib/org.eclipse.persistence.jpa.modelgen_2.5.2.v20140319-9ad6abd.jar"/> 
    <jar href="lib/org.eclipse.persistence.jpars_2.5.2.v20140319-9ad6abd.jar"/> 
</resources> 
<security> 
    <all-permissions/> 
</security> 
<application-desc name="Inventario de XXXX" 
main-class="mx.xxxxx.InventarioAJ"/> 

Таким образом, «апплет убывание» тег был удален и заменен на «приложение по убыванию» метка и «безопасность» тег должен быть чтобы позволить приложению иметь доступ к файловой системе а также сетевые коммуникации. Если это так (все разрешения необходимы), все банки должны быть подписаны. Приветствия