Java 已签名小程序加载已签名jar读取文件错误

Java 已签名小程序加载已签名jar读取文件错误,java,security,digital-signature,jar-signing,Java,Security,Digital Signature,Jar Signing,目前我正在开发一个游戏,并制作了一个JFrame加载程序,可以从user.home目录加载游戏,但最近我决定将它也放在一个web小程序中 当我运行JFrame加载程序时,它成功加载游戏,检查文件并打开。(游戏和JFrame均已签署) 我可以使用以下方法从小程序加载和调用该方法: m.invoke(null, (Object) new String[]{textPack, font, currVersionStr,saveDir}, null, null, this); 但是,当小程序尝试加载它

目前我正在开发一个游戏,并制作了一个JFrame加载程序,可以从user.home目录加载游戏,但最近我决定将它也放在一个web小程序中

当我运行JFrame加载程序时,它成功加载游戏,检查文件并打开。(游戏和JFrame均已签署) 我可以使用以下方法从小程序加载和调用该方法:

m.invoke(null, (Object) new String[]{textPack, font, currVersionStr,saveDir}, null, null, this);
但是,当小程序尝试加载它时,会发生以下错误,它可以很好地加载游戏,但当它尝试加载带有代码的已保存选项时:

 File f = new File(OS.saveDir + OS.fileSeparator + "Options.keys");
    if (!f.exists()) {
        try {
            f.createNewFile();
            saveKeys();
        } catch (IOException ex) {
            Logger.getLogger(Configuration.class.getName()).log(Level.SEVERE, null, ex);
        }
它给了我以下错误:

2013年3月14日晚上11:10:21 core.GameEngine严重运行:null java.security.AccessControlException:访问被拒绝 (“java.io.FilePermission”“C:\Users\Jake.Zombies\Options.keys” java.security.AccessControlContext.checkPermission(未知)处的“读取”) 源代码)位于java.security.AccessController.checkPermission(未知 源代码)位于java.lang.SecurityManager.checkPermission(未知源代码) 位于java.lang.SecurityManager.checkRead(未知源代码) java.io.File.exists(未知源)位于 loadkey(Configuration.java:123)位于 onStartup(Configuration.java:105)位于 core.GameEngine.run(GameEngine.java:76)

如果(!f.exists())行是Configuration.java:123

我的问题是它在JFrame加载程序(签名)中加载良好,但在小程序(签名)中加载不好

非常感谢您的帮助,谢谢

编辑:小程序加载程序检查文件,可以很好地下载最新的文件。只有当我要求我加载的游戏加载文件时,它才会遇到问题

编辑2(满载代码):

通过获取缓冲输入流,然后将其写入缓冲输出流进行写入。

不允许小程序访问任意文件


实际上,如果从本地磁盘加载,则会出现异常。这是如何加载的?

小程序不允许访问用户文件系统。您必须将数据保存回服务器。

混合使用受信任和不受信任的代码确实是个好主意。你可以装任何东西。加载代码的一种更安全的方法是通过
javax.jnlp
,从6u10开始,小程序就可以使用它。注意,在加载jar之前,您应该确保不引用任何类,因为这样您就不能使用这些类名(它不会使用单独的类加载器)。

谢谢,但考虑到它可以生成和编写文件,我认为只有在它们未签名的情况下才可以使用这些类。我使用的是“launch.html”由Netbeans生成,我添加了关于如何加载另一个jar的代码,以及关于如何从web下载文件并将其存储在文件夹中的小说明。
 File folder = new File(saveDir);
        URL u = new URL("jar:" + folder.toURI().toURL() + "Zombies.jar!/");
        URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{u});
        Class c = Class.forName("Visual.GameDisplay", true, ucl);
        Method m = c.getMethod("main", String[].class, String[].class, java.sql.Connection.class, Component.class);
        m.invoke(null, (Object) new String[]{textPack, font, currVersionStr,saveDir}, null, null, this);