【发布时间】:2012-04-14 08:26:01
【问题描述】:
我知道已经有很多关于这个主题的问题,但我找不到适合我的问题的问题。
我只是创建了一个 JAVA 小程序,它从 xml 文件中读取数据,然后执行与它相关的操作。当我在 Eclipse 中进行测试时,它适用于以下代码(week1 是一个按钮!):
week1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
parseXMLFile("../../week1.xml", teams);
updateTable(teams);
}
});
由于 .java 文件位于 src 文件夹中,而 xml 位于根目录中,因此“../../week1.xml”可以解决问题。但是当我将小程序导出为 JAR 并将其插入 HTML 页面时,该页面会随小程序一起加载,但是当我单击 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?
非常感谢
【问题讨论】:
-
“当我点击 week1 按钮时,没有任何反应” 几乎可以肯定。检查 Java 控制台的输出。在没有打开控制台的情况下调试小程序就像试图用一只手臂绑在背后战斗。