java - Applet 需要读取位于 JAR 外部的 XML

标签 java jar applet

我知道已经有很多关于这个主题的问题,但我找不到一个来解决我的问题。

我只是创建了一个 JAVA applet,它从 xml 文件中读取数据,然后执行与它相关的操作。当我在 Eclipse 中进行测试时,它可以正常使用以下代码(第 1 周是一个按钮!):

week1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
                parseXMLFile("../../week1.xml", teams);
                updateTable(teams);
          }
        });

由于 .java 文件位于 src 文件夹中,而 xml 位于根目录中,因此“../../week1.xml”可以解决问题。但是当我将 applet 导出为 JAR 并将其插入 HTML 页面时,页面会加载 applet 但是当我单击 week1 按钮时,什么也没有发生(我几乎可以肯定这是因为它没有找到 xml 文件作为它在 JAR 存档之外)。 我在 Java 控制台中收到此错误:

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.dir" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at java.io.Win32FileSystem.getUserPath(Unknown Source)
at java.io.Win32FileSystem.resolve(Unknown Source)
at java.io.File.getAbsolutePath(Unknown Source)
at java.io.File.getAbsoluteFile(Unknown Source)
at java.io.File.toURI(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at skullBall.parseXMLFile(skullBall.java:77)
at skullBall.access$0(skullBall.java:70)
at skullBall$1.actionPerformed(skullBall.java:52)

我想将 .jar 存档和 xml 文件放在同一位置,我该怎么做,因为 JAR 中的代码需要读取外部的 xml?

非常感谢

最佳答案

how can I do this as the code inside the JAR needs to read the xml that's outside?

  1. 将 XML 放在服务器上的一个路径中,您可以在该路径中使用浏览器访问它(通过尝试通过服务器/本地主机在浏览器中显示它来检查)。
  2. 通过 URL 访问资源。要形成该 URL,请使用相对于 document base 的路径或 code base小程序的。

例如

URL urlToXml = new URL(getDocumentBase(), "the.xml");

java.security.AccessControlException: access denied (
    "java.util.PropertyPermission" "user.dir" "read")

这应该通过相对于文档(或代码)库的 URL 访问 XML 来解决。

关于java - Applet 需要读取位于 JAR 外部的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946579/

相关文章:

java - 在 Java 中使用 Qt?

java - 是否可以为接口(interface)创建对象而不用java中的任何类实现它?

android - 未知动画名称 : objectAnimator. 使用九个旧机器人。仍然出现错误

java - 可执行 Jar : jorg. apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I) org.apache.poi.ooxml.POIXMLTypeLoader.<clinit> 中的 Jar

java - 在 JAX-WS 客户端 .jar 中嵌入 Web 服务的 WSDL

java - 内联网应用程序的签名小程序

java - OSX Java Applet 调试 - 请参阅 GET/POST

Java Applet - 列表错误

java - 如何将配置从配置单元脚本传递到 UDF

java - 瓦丁表 : how to set maximum initial column width