2015-10-05 2 views
1

При запуске приложения JavaFX (с Swing-код, внедренный), как Webstart происходит следующее сообщение об ошибке:JavaFX SwingNode ExceptionInInitializerError

java.lang.ExceptionInInitializerError 
    at com.ookali.reol.annotator.mainApp.MainApp.start(MainApp.java:481) 
    at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$174(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(Unknown Source) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$149(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.RuntimeException: Error when calling sun.swing.JLightweightFrame.getMethod('notifyDisplayChanged'). 
    at javafx.embed.swing.SwingNode$OptionalMethod.<init>(Unknown Source) 
    at javafx.embed.swing.SwingNode.<clinit>(Unknown Source) 
    ... 9 more 
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.swing") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPackageAccess(Unknown Source) 
    at sun.plugin2.applet.SecurityManagerHelper.checkPackageAccessHelper(Unknown Source) 
    at sun.plugin2.applet.FXAppletSecurityManager.checkPackageAccess(Unknown Source) 
    at java.lang.Class.checkPackageAccess(Unknown Source) 
    at java.lang.Class.checkMemberAccess(Unknown Source) 
    at java.lang.Class.getMethod(Unknown Source) 
    ... 11 more 

код на MainApp.java:481

final SwingNode sNcontent = new SwingNode(); 

Он испытан в Windows 7 с Java 8 Update 60, уровень безопасности Java «Высокий». Все банки приложения подписаны с действующим сертификатом. Если приложение запускается как автономное приложение, оно запускается без каких-либо исключений.

Я попытался установить разрешения в файле jnlp для всех разрешений или j2ee-application-client-permissions, но таким образом java отказывается запускать приложение из-за проблем с безопасностью. Добавление пакетов com.sun через rt.jar (из jdk) не повлияло на проблему.

Вот файл JNLP используется:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="App.jnlp"> 
    <information> 
    <title>Annotator</title> 
    <vendor>Unknown</vendor> 
    <description>pdfannotator</description> 
    <offline-allowed/> 
    </information> 
    <resources> 
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="application.jar" size="656744" download="eager" /> 
    <jar href="lib/chemistry-opencmis-client-api-0.13.0.jar" size="45801" download="eager" /> 
    <jar href="lib/chemistry-opencmis-client-bindings-0.13.0.jar" size="372941" download="eager" /> 
    <jar href="lib/chemistry-opencmis-client-impl-0.13.0.jar" size="168501" download="eager" /> 
    <jar href="lib/chemistry-opencmis-commons-api-0.13.0.jar" size="154224" download="eager" /> 
    <jar href="lib/chemistry-opencmis-commons-impl-0.13.0.jar" size="705465" download="eager" /> 
    <jar href="lib/commons-codec-1.9.jar" size="289895" download="eager" /> 
    <jar href="lib/commons-io-2.4.jar" size="202638" download="eager" /> 
    <jar href="lib/commons-logging-1.2.jar" size="70678" download="eager" /> 
    <jar href="lib/gson-2.2.4.jar" size="211432" download="eager" /> 
    <jar href="lib/httpclient-4.5.jar" size="782684" download="eager" /> 
    <jar href="lib/httpcore-4.4.1.jar" size="354806" download="eager" /> 
    <jar href="lib/jackson-annotations-2.6.0.jar" size="57828" download="eager" /> 
    <jar href="lib/jackson-core-2.6.0.jar" size="273338" download="eager" /> 
    <jar href="lib/jackson-databind-2.6.0.jar" size="1218384" download="eager" /> 
    <jar href="lib/json-20141113.jar" size="73899" download="eager" /> 
    <jar href="lib/pdfbox-app-1.8.10.jar" size="10968615" download="eager" /> 
    <jar href="lib/rt-1.5.0_06.jar" size="68040885" download="eager" /> 
    <jar href="lib/slf4j-api-1.7.5.jar" size="34205" download="eager" /> 
    <jar href="lib/stax2-api-3.1.4.jar" size="178711" download="eager" /> 
    <jar href="lib/swing-layout-1.0.3.jar" size="125697" download="eager" /> 
    <jar href="lib/woodstox-core-asl-4.4.0.jar" size="510465" download="eager" /> 
    </resources> 
    <jfx:javafx-desc width="600" height="400" main-class="com.ookali.reol.annotator.mainApp.MainApp" name="annotator" > 
    </jfx:javafx-desc> 
    <update check="background"/> 
</jnlp> 

ответ

0

Проблема была PermissionException «accessClassInPackage.sun.swing», который означает, что в Webstart не разрешается использовать пакет sun.swing. Придется удалить все классы уроков в пакете sun.swing, чтобы заставить его работать.