Java 安全异常:试图将沙盒jar作为受信任库打开

Java 安全异常:试图将沙盒jar作为受信任库打开,java,security,jar,jogl,Java,Security,Jar,Jogl,我试图通过网页运行小程序,但这样做会导致错误: java.lang.reflect.InvocationTargeException at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116) at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3520) at sun.plugin2.

我试图通过网页运行小程序,但这样做会导致错误:

java.lang.reflect.InvocationTargeException
       at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116)
       at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3520)
       at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3051)
       at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
       at java.lang.Thread.run(Thread.java:662)
Caused by:java.lang.SecurityExcption: attempted to open sandboxed jar file :/home/daniel/workspace/project/jars/jogl/jogl.all.jar as a Trusted-Library
       at com.sun.deploy.security.CPCallbackHandlers$ParentElement.checkResources(CPCallbackHandler.java:358)
       at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(DeployURLClassPath:852)
       ....more stuff I don't want to have to retype but I can if necessary
我不明白为什么。我试图用我的applet处理几个jar,但这是唯一一个导致问题的jar(至少目前是这样)。我查看了,但是由于我没有额外的库(除非applet.class计数,我还没有签名),这似乎不适用于这里。我查看了,但是单击了“启用-显示警告(如果需要)”,“Trusted Library:true”在MANAFEST文件中,我正在运行firefox 3.6.24(针对我所拥有的Linux机器)。我很感激你的帮助

jogl.all.jar的MANAFEST文件:

Manifer-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
Specification-Title: Java Bindings for OpenGL API Specification
Specification-Version: 2.0
Specificaiton-Vender: JogAMp Community
Implementation-Title: Java Bindings for OpenGL Runtime Environment
Implementation-Version: 2.0-b23-20110303
Implementation-Branch: rc
Implementation-Commit: bcf5d6ac871a29398b441df617923d3dd2cf35c1
Implementation-Vendor: JogAmp Community
Implementation-URL: http://jogamo.org/
Extension-Name: javax.media.opengl
Implementation-Vendor-Id: com.jogamp
Trusted-Library: true

看起来好像您还没有签署jar(因此是“沙盒”位)


编写可被不可信代码安全使用的可信Java代码非常非常困难。

我也有类似的问题-根本原因是Java JRE安装为32位和64位版本-基本上在“控制面板/添加或删除程序”列表中有两个单独的应用条目可见

显然这是我的网络浏览器(IE)和/或java插件。从系统中删除两个JRE版本,然后从头安装最新的JRE解决了问题


我的问题出现在Java 7u25上。

你是说jogl.all.jar吗?那不是我写的,所以我不应该在上面签名,对吗?“还是我错了,签名与谁写/发表的无关?”丹尼尔提出了一个棘手的问题。任何人都可以签字。什么是正确和适当的东西来签署是另一个问题。我认为您应该能够找到标记为可信库的JOGL版本,这些版本都经过签名并可能得到维护(不再是Sun提供的)。如果您自己签名(为了学习而签名的任何jar文件),这是否允许您避免我遇到的这个问题?或者你必须找到一个“可信库”版本吗?@Daniel你可以用任何[code signing]证书对任何jar(包括可信库)进行签名。我建议避免使用CAs签名的真实证书进行测试。我还没有尝试过,但将沙盒代码放入沙盒的JNLP扩展中,并在主JNLP中引用该扩展,这难道不起作用吗?