当前位置: 首页 > 知识库问答 >
问题:

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

南门欣怡
2023-03-14

我的applet在Windows7上工作得很好(在IDE和Firefox中都可以作为一个签名的JAR部署到网页上),但在OS X上运行时会抛出FileNotFoundException(权限被拒绝)(在IDE和Firefox中都可以)。

当它尝试使用新的文件密钥复制创建新的FileOutputStreamFOS时,会发生异常:

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]);给出与显式“/”相同的结果;

有人能解释一下为什么抛出FileNotFoundException(许可权被拒绝),或者建议一个跨平台的解决方案吗?

共有1个答案

谷梁云瀚
2023-03-14

正如Andrew所建议的,对文件路径使用user.home而不是“/”。最终的解决方案是使用“os.name”来确定用户os,然后使用“user.home”来确定路径。这在windows和Mac上都适用。

 类似资料: