2014-11-12 3 views
1

Я пытаюсь запустить простое приложение Java Web Start. Я написал свой код в NetBeans и использовал jar, экспортированный для моего .jnlp. В конце концов я планирую, что код читается из реестра Windows и использует эти данные, но пока все, что я делаю, создает String, а затем вызывает System.out.println(strName);. Я сам подписываю банку, используя стратегию, изложенную в here. Когда я скачать и запустить .jnlp, я получаю следующее исключение:Java.util.PropertyPermission Failure

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "jna.debug_load" "read") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at com.sun.javaws.security.JavaWebStartSecurity.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) 
    at java.lang.System.getProperty(Unknown Source) 
    at java.lang.Boolean.getBoolean(Unknown Source) 
    at com.sun.jna.Native.<clinit>(Native.java:95) 
    at com.sun.jna.Pointer.<clinit>(Pointer.java:41) 
    at com.sun.jna.platform.win32.WinReg$HKEY.<init>(WinReg.java:32) 
    at com.sun.jna.platform.win32.WinReg.<clinit>(WinReg.java:61) 
    at cvbxtractor.CvbXtractor.main(CvbXtractor.java:17) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(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) 

Я попытался добавить permission java.util.PropertyPermission "jna.debug_load", "read"; к моему java.policy файлу, я пытался подписанием и отставки любого jars может использовать, и убедился, что мой .jnlp имеет

<security> 
     <all-permissions/> 
</security> 

line в нем, но никто не помог. Я уверен, что я просто пропустил какой-то секретный ключ где-то, если это легко, пожалуйста, простите меня, это мое первое приложение Java Web Start.

+0

Является ли manifest.mf объявлением всех разрешений? –

ответ

1

Начиная с java 7u45, вы не можете читать свойства системы при запуске из jnlp. Oracle в основном разрушен javaws. Если вы пишете новое приложение, я бы рекомендовал держаться подальше от веб-сайта java. Он сломан, и они просто продолжают делать это хуже, заставляя обновления для системы безопасности нарушать ваше приложение.

Это, как говорится, является одним из способов обхода этой проблемы, чтобы префикс всех ваших свойств с помощью jnlp.. Итак, вам нужно будет переименовать свою собственность jnlp.jna.debug_load. Если это свойство из сторонней библиотеки/банки, которую вы используете, вам не повезло.