Java 小程序需要读取位于JAR外部的XML

Java 小程序需要读取位于JAR外部的XML,java,jar,applet,Java,Jar,Applet,我知道关于这个话题已经有很多问题了,但是我找不到一个问题来解决我的问题 我只是创建了一个JAVA小程序,它从xml文件中读取数据,然后执行与之相关的操作。当我在Eclipse中进行测试时,它与以下代码配合良好(week1是一个按钮!): 由于.java文件位于src文件夹中,而xml位于根目录下,所以这个“../../week1.xml”就起到了作用。但当我将小程序导出为JAR并插入HTML页面时,页面会加载小程序,但当我单击week1按钮时,什么也没有发生(我几乎可以肯定,这是因为它找不到JA

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

我只是创建了一个JAVA小程序,它从xml文件中读取数据,然后执行与之相关的操作。当我在Eclipse中进行测试时,它与以下代码配合良好(week1是一个按钮!):

由于.java文件位于src文件夹中,而xml位于根目录下,所以这个“../../week1.xml”就起到了作用。但当我将小程序导出为JAR并插入HTML页面时,页面会加载小程序,但当我单击week1按钮时,什么也没有发生(我几乎可以肯定,这是因为它找不到JAR归档之外的xml文件)。 我在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,如何才能做到这一点


非常感谢

你的问题让我困惑。
据我所知,
XML
文件是您的,并且希望它始终位于同一位置(例如,最终用户不希望提供不同的
XML

那么,为什么不在jar中传递文件,以便使用相对路径呢?你为什么要从罐子外面读呢

当JAR中的代码需要读取外部的xml时,我如何做到这一点

  • 将XML放在服务器上可以使用浏览器访问的路径中(通过.server/localhost尝试在浏览器中显示来进行检查)
  • 通过URL访问资源。要形成该URL,请使用与小程序的或相关的路径
  • 例如。

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

    “当我单击week1按钮时,什么都没有发生”,这几乎可以肯定。检查Java控制台的输出。在控制台未打开的情况下调试小程序就像试图用一只胳膊绑在背后进行战斗。XML文件将发生变化。最终用户(me)将用另一个具有不同内容但名称相同的xml文件替换旧的xml文件。我只是不想在每次需要更改XML的内容时都重新打包jar文件,这听起来不错……我会尝试做点什么,然后再给你回复!我确实看过控制台,错误在调用parseXMLFile()函数的那一行!谢谢
    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)
    
    URL urlToXml = new URL(getDocumentBase(), "the.xml");
    
    java.security.AccessControlException: access denied (
        "java.util.PropertyPermission" "user.dir" "read")