【问题标题】:Security Exception: Attempted to to open a sandboxed jar as a Trusted-Library安全例外:尝试将沙盒 jar 作为可信库打开
【发布时间】:2012-12-26 18:31:03
【问题描述】:

我正在尝试通过网页运行小程序,但这样做会出现错误:

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

我不明白为什么。我试图用我的小程序来处理几个罐子,但这是唯一导致问题的罐子(至少目前是这样)。我查看了this similar question,但由于我没有额外的库(除非applet.class 算在内我还没有签名),这似乎不适用于这里。我查看了Mixing Signed and Unsigned Code,但是单击了“启用 - 如果需要则显示警告”,“受信任的库: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

【问题讨论】:

    标签: java security jar jogl


    【解决方案1】:

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

    编写不受信任的代码可以安全使用的受信任的 Java 代码真的真的困难。

    【讨论】:

    • 你说的是 jogl.all.jar 吗?我没有写,所以我不应该签名,对吧?还是我不正确并且签名与谁编写/发布无关?
    • @Daniel 棘手的问题。任何人都可以签署任何东西。什么是正确和适当的签名是另一个问题。我认为您应该能够找到标记为受信任库的已签名并可能维护的 JOGL 版本(不再由 Sun 提供)。
    • 如果您自己签名(任何 jar 文件以供学习),是否可以避免我遇到的这个问题?还是你必须去找一个“受信任的图书馆”版本?
    • @Daniel 您可以使用任何 [代码签名] 证书签署任何 jar,包括受信任的库。我建议避免使用由 CA 签名的真实证书进行测试。
    • 我没有尝试过,但是将沙盒代码放入沙盒的 JNLP 扩展中并在主 JNLP 中引用该扩展不是也可以吗?跨度>
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多