在Java WebStart中访问类的权限

在Java WebStart中访问类的权限,java,security,java-web-start,Java,Security,Java Web Start,我创建了一个.jar文件,其中包含我的类以及从多个ApacheTomcat jar中提取的类。然后我对jar进行了签名,并用创建了一个JNLP文件 但在运行我的应用程序时,WebStart拒绝从我的jar访问类: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.catalina.deploy) at java.s

我创建了一个.jar文件,其中包含我的类以及从多个ApacheTomcat jar中提取的类。然后我对jar进行了签名,并用
创建了一个JNLP文件

但在运行我的应用程序时,WebStart拒绝从我的jar访问类:

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.catalina.deploy)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:393)
    at java.security.AccessController.checkPermission(AccessController.java:553)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1529)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:291)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1018)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
    at java.lang.Class.getMethod0(Class.java:2687)
    at java.lang.Class.getMethod(Class.java:1620)
    at org.apache.catalina.startup.SetPublicIdRule.begin(WebRuleSet.java:639)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276)
    ... 33 more

这是WebStart中的一个错误,还是为什么会出现此安全异常?

请尝试通过调用以下命令清除安全管理器:

System.setSecurityManager(null);
我从一个JavaWebStart应用程序中使用它来获得完全的控制权,但是应用程序需要签名并具有

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


正如您所说的那样。

请将您的答案也张贴在这里,以获得奖励:千万不要在签名代码中这样做!您将,呃,从正在运行的任何进程中删除安全管理器。这有什么问题?应用程序已经可以访问所有用户的数据。我同意Witek的观点。我曾经在我想要完全控制虚拟机的情况下使用过这种方法,但设置所有权限都不行。我同意Tom的观点。更好的方法是实现一个自定义安全管理器,它只提供对特定类(您的类)的扩展(而不是完全)访问。Tomcat添加了package.access安全属性,这在WebStart中并不合适。