我的applet在Windows7上工作得很好(在IDE和Firefox中都可以作为一个签名的JAR
部署到网页上),但在OS X上运行时会抛出FileNotFoundException(权限被拒绝)
(在IDE和Firefox中都可以)。
当它尝试使用新的文件
密钥复制
创建新的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]);
给出与显式“/”相同的结果;
有人能解释一下为什么抛出FileNotFoundException(许可权被拒绝)
,或者建议一个跨平台的解决方案吗?
正如Andrew所建议的,对文件路径使用user.home而不是“/”。最终的解决方案是使用“os.name”来确定用户os,然后使用“user.home”来确定路径。这在windows和Mac上都适用。
我遇到一个例外,当我试图打开FileInputStream时,文件打开权限被拒绝。 这是stacktrace: 是的,我在清单中有权限:
在构建TargetSDKVersionV29时,我无法访问存储。 下面是我的分级配置: 请注意,已授予权限,并且在构建时,相同的设置工作良好。 下面是我的实现:
在其他设备中没有发生这种情况,我测试的设备:、、
在stackoverflow中也有类似的错误,但在尝试解决方案后(如您将在下几行中看到的),我会遇到相同的错误。 我在使用Nexus 5X api 27 oreo rom的模拟器和使用Android4.4的华为真手机中都试过了 在这两个设备中,我都有相同的错误:
刚刚从windows切换到OSX,所以很抱歉如果这是一个简单的修复。 显然有些东西不稳定。 提前感谢您的帮助!
Docker安装在AWS EC2 Ubuntu 16.04实例上,如下所示: 引发权限被拒绝错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 收到http:///var/run/docker.sock/v1.39/info: 拨号unix/var/run/docker.sock:connect:权限被拒绝 显示: uname-a