Как прочитать внешний XML-файл из JAR - PullRequest
3 голосов
/ 08 сентября 2010

Мне нужно прочитать внешний XML-файл из моего java-приложения в исполняемом файле jar.
Если я запускаю его из консоли (java -jar package.jar), он работает нормально, но если я запускаю его двойным щелчком (Java Platform SE (двоичный файл), он не работает.
У меня проблема с относительным путем.С абсолютным путем это работает в обе стороны.

Ответы [ 5 ]

4 голосов
/ 08 сентября 2010

Необходимо добавить (относительный к JAR) путь к плитке XML к записи Class-Path в файле MANIFEST.MF.Эта запись содержит информацию о пути к классу JAR.Предполагая, что вы хотите, чтобы XML-файл находился в той же папке, что и сам JAR-файл, достаточно следующего:

Class-Path: .

(не забудьте поставить пустую строку в конце MANIFEST.MF file)

Затем вы можете получить его как ресурс classpath, используя Class#getResource() или ClassLoader#getResource().Первое достаточно в вашем случае.

URL xmlResource = getClass().getResource("/filename.xml");
File xmlFile = new File(xmlResource.getPath());
// ...
1 голос
/ 08 сентября 2010
1 голос
/ 08 сентября 2010

Добавьте этот файл в путь к классу в манифесте JAR и прочитайте его как поток ввода.

0 голосов
/ 08 сентября 2010

Трудно дать точный ответ, не зная, на какой ОС вы работаете.

Общий ответ будет состоять в том, чтобы изменить ваш модуль запуска (значок на рабочем столе), чтобы указать, что исходный рабочий каталог будет таким же, как тот, который вы используете при запуске команды из оболочки.

0 голосов
/ 08 сентября 2010
(new File(".")).getAbsolutePath();

Должен дать вам путь кувшина. Распечатайте его, чтобы дважды проверить, а затем нарисуйте на нем свой относительный путь.

...