Относительный путь к файлу JAR, используемому в веб-приложении - PullRequest
0 голосов
/ 10 февраля 2012

Прежде всего, извините, если название не такое описательное, как должно быть, но было довольно сложно объяснить это так кратко.

У меня есть Java-приложение (не веб-приложение).), который должен читать из файла свойств.Это Java-приложение также должно быть экспортировано как JAR-файл, а затем использовано в веб-приложении, но файл свойств не находится в JAR-файле.Это выглядело бы так:

/webapps/MyWebApp/WEB-INF/myJavaApp.jar
/webapps/MyWebApp/WEB-INF/config.properties

Итак, при кодировании Java-приложения, которое будет экспортировано как myJavaApp.jar, я не могу сделать это, чтобы оно считывало файл config.properties из Относительного пути.Если я поставлю Абсолютный путь, он будет работать правильно:

properties.load(new FileInputStream("C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/MyWebApp/WEB-INF/config.properties"));

Но, если я попытаюсь использовать относительный путь, он не будет работать.Я пробовал разные решения здесь или на других веб-страницах, но ни одно из них не работает.

Почти забыл, класс, в котором я читаю файл свойств, является статическим!

Если кто-то может пролить свет на это, это будет очень цениться.

Спасибо впродвинутый.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Если вы убедитесь, что файл находится в classpath , то вы можете просто загрузить его с помощью YourClassName.class.getResourceAsStream("/config.properties"). Это был бы самый простой способ реализовать это. Для вашего веб-приложения вы помещаете файл в WEB-INF/classes/, а для автономного приложения вы просто устанавливаете classpath при запуске приложения.

0 голосов
/ 10 февраля 2012

В вашем Java-приложении вы можете получить абсолютный путь к текущему каталогу следующим образом:

 System.getProperty("user.dir");  

Предполагая, что config.properties находится в том же каталоге, вы сможете определить абсолютный путьэтого файла в вашем коде Java, и вы можете развернуть его в любом месте, без жесткого кодирования абсолютного пути в вашем коде.

РЕДАКТИРОВАТЬ:

Если ваше Java-приложение является исполняемым JAR, указанная выше команда вернет правильный каталог, только если он вызван напрямую.Если вы вызываете это приложение косвенно из другого процесса, на платформе Windows начальным каталогом будет windows / system32, поэтому вам нужно проанализировать, как вызывается ваш jar-файл.В последнем случае лучше добавить функциональность в ваше веб-приложение, чтобы предоставить jar путь к файлу свойств.

...