繁体   English   中英

OS X上的Java Applet-FileNotFoundException(权限被拒绝)

[英]Java Applet on OS X - FileNotFoundException (Permission denied)

我的小程序在Windows 7上(在作为签名jar部署到网页上的Windows 7上,在IDE和Firefox中均能完美运行),但是在OS X(在IDE和Firefox中)上运行时,都抛出FileNotFoundException (Permission denied) )。

当尝试使用新的File keyCopy创建新的FileOutputStream fos时,会发生异常:

InputStream is = this.getClass().getClassLoader().getResourceAsStream(sslKeyRingClass[0]);
if (is != null) {
    keyCopy = new File("/" + sslKeyRingClass[0]);
    FileOutputStream fos = new FileOutputStream(keyCopy);
    byte[] buf = new byte[256];
    int read = 0;
    while ((read = is.read(buf)) > 0) {
        fos.write(buf, 0, read);
    }
    fos.close();
    is.close();
}

在删除显式文件分隔符/之后,它确实可以在Windows和OS X上的IDE(Eclipse)上运行。

keyCopy = new File(sslKeyRingClass[0]);

但是当部署为jar时,在Windows和OS X上都抛出相同的FileNotFoundException

使用系统相关的分隔符keyCopy = new File(File.separator + sslKeyRingClass[0]); 给出与显式'/'相同的结果;

我在Eclipse中使用具有AllPermission的策略文件,该jar已使用有效的代码签名证书签名,并且清单具有Permissions: all-permissions属性。

谁能解释为什么抛出FileNotFoundException (Permission Denied) ,并建议一种可以跨平台工作的解决方案?

如安德鲁(Andrew)所建议,使用user.home代替“ /”作为文件路径。 最终解决方案是使用“ os.name”确定用户os,然后使用“ user.home”作为路径。 这适用于Windows和Mac。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM