Апплет должен прочитать XML, расположенный вне JAR - PullRequest
1 голос
/ 30 марта 2012

Я знаю, что уже было довольно много вопросов по этой теме, но я не смог найти один для моей проблемы.

Я просто создаю апплет JAVA, который читает из файла XML, а затем делаетчто с этим делать.Когда я тестирую в Eclipse, он отлично работает со следующим кодом (неделю1 - кнопка!):

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, что снаружи?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

как я могу это сделать, так как код внутри JAR должен читать xml, находящийся снаружи?

  1. Поместите XML в путь на сервере, где вы можете получить к нему доступ через свой браузер (проверьте, попытавшись показать его в браузере, через. Server / localhost).
  2. Доступ к ресурсу по URL. Чтобы сформировать этот URL, используйте путь относительно базы документов или основы кода апплета.

Е.Г.

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

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

Это должно быть решено путем доступа к XML через URL относительно базы документа (или кода).

1 голос
/ 30 марта 2012

Ваш вопрос сбивает меня с толку.
Насколько я понимаю, файл XML принадлежит вам, и ожидается, что он всегда будет находиться в одном и том же месте (то есть конечный пользователь не должен предоставлять другой * 1003).* например).
Так почему бы вам не доставить файл в банку , чтобы вы могли использовать относительный путь?Почему вы пытаетесь прочитать это снаружи банки?

...