gpt4 book ai didi

java.security.AccessControlException : access denied using Java Web Start

转载 作者:行者123 更新时间:2023-11-29 07:22:29 25 4
gpt4 key购买 nike

我在使用 JWS (Java Web Start) 访问文件时遇到一些问题。该程序添加了一个新的标签和图像。该程序在我的本地计算机上运行良好,但当我使用 JWS 在我的远程服务器上运行该程序时,却出现错误页面。这是错误示例:

Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied (java.io.FilePermission add2.png read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)

即使在确保图像具有读取权限后也会发生这种情况。

想法?

最佳答案

与 applet 一样,JNLP (webstart) 在客户端计算机上运行,​​而不是在服务器计算机上运行。客户端从网页下载程序并在本地机器上运行。 java.io 中的任何引用都将指向本地磁盘文件系统(代码运行的地方),而不是远程磁盘文件系统(代码从那里下载的地方)预计。

你有两个选择:

  1. 将图像打包到 JAR 中并使用 ClassLoader#getResourceAsStream()而不是从中获取 InputStream

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    BufferedImage image = ImageIO.read(classLoader.getResourceAsStream("add2.png"));
  2. 将图像放在网络服务器的公共(public)位置,以便您可以通过 URL 访问它(只比在类路径中慢一点点)。

    BufferedImage image = ImageIO.read(new URL("http://example.com/add2.png"));

也就是说,无论如何,在 java.io 中使用相对路径而不是绝对路径是个坏主意。永远不要这样做。它将取决于您无法控制的当前工作目录。

关于java.security.AccessControlException : access denied using Java Web Start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com