Java Manifest Trusted-library和ResourceBundle.getBundle()

时间:2014-01-31 12:11:35

标签: java manifest

我正在尝试从已签名的小程序加载外部资源(混合代码)时删除“阻止小程序”警告消息。

如果我现在离开applet,它会显示警告消息,点击“no block”会使applet正常工作。 另一方面,如果我只修改applet以将“Trusted-library:true”属性添加到清单文件中以接受未签名的外部资源,则会导致applet崩溃。

调试applet,我发现它在运行以下行时崩溃了:

ResourceBundle bundle = ResourceBundle.getBundle("conf/basic","en_EN");

抛出的异常是:

java.util.MissingResourceException: 
Can't find bundle for base name conf/basic, locale en_EN

我已经检查过具有文件basic_en_EN.properties的conf文件夹与applet jar存在于同一级别(即使没有可信库也不会工作)

阅读Java 7 doc它说添加可信库应该可以解决混合签名/无符号代码问题,但事实并非如此。

此外,在Java 7 doc中,它没有提及有关ResourceBundle.getBundle()方法问题的任何内容,但它在Java 6 doc中有所说明:

  

要用Trusted-Library标记的jar文件中的代码   如果使用调用,可能需要稍微修改manifest属性   这是依赖于类加载器的,例如单参数版本   Class.forName(),Class.getResource()和   Class.getResourceAsStream(),一些变种   java.util.ResourceBundle.getBundle(),以及其他任何方法   相对于其直接调用者的定义加载器进行操作。变化   只有在找到所请求的类或资源时才需要进行   在jar文件中,它不是Trusted-Library(因此被加载   通过普通的Web Start或applet类加载器)。

即使我正在使用Java 7,我发现this post他们解释了在Java 6中替换getBundle()的方法。我已经尝试了它而没有任何结果。

我的清单文件是:

Manifest-Version: 1.0
Created-By: Company
Main-Class: src.applet.MyApplet
Class-Path: ./
Application-name: myApplet
Permissions: all-permissions
Trusted-Library: true
Caller-Allowable-Codebase: *
Application-Library-Allowable-Codebase: *

我用jdk和jre 7u45 / 7u51编译并测试了它,结果相同。

任何帮助或建议都会被贬低。

0 个答案:

没有答案