#java #tomcat #properties #classpath #solaris
#java #tomcat #свойства #classpath #solaris
Вопрос:
у меня возникли проблемы с использованием стороннего файла .jar в моем веб-приложении JSP. Этот сторонний файл .jar использует файл .properties, который должен быть расположен в classpath .
Это фрагмент кода, используемый для поиска файла (извлеченного из файла .jar):
...
for (String classpath : new String[]{ "sun.boot.class.path", "java.class.path", "java.ext.dirs" })
for (String path : System.getProperty(classpath).split(System.getProperty("path.separator")))
listSearchPaths.add(new File(path));
...
Насколько я понимаю, приложение просматривает три разных системных свойства:
- sun.boot.class.path
- java.class.path
- java.ext.dir
После сборки требуемый файл .properties находится в той же папке, что и сторонний файл .jar
Project.war/WEB-INF/lib/file.properties
Project.war/WEB-INF/lib/thirdparty.jar
Вот в чем проблема:
Я пытаюсь запустить это.война на сервере tomcat6 на Solaris. Сервер запускается успешно, но во время выполнения, при использовании сторонних функций, приложение не может найти файл .properties в classpath .
Я попробовал несколько вещей, таких как:
— настройка .properties в tomcat common / shared loader
— настройка .properties в теге classpath в build.xml во время компиляции
Я также распечатал текущий путь к классу во время выполнения, что приводит только к «/usr/apache/tomcat6/apache-tomcat-6.0.37/bin/bootstrap.jar «
Я знаю, что есть разница между путем к классам tomcat и java classpath, но я не могу понять это прямо сейчас.
Есть идеи? Заранее спасибо.
Комментарии:
1. Вы пробовали поместить файл .properties в WEB-INF/classes вместо WEB-INF/lib? Это должен быть правильный путь к классу.
2. Нет, но я уже решил эту проблему, используя этот подход: — скопировал файл .properties в папку tomcat — создал setenv.sh скрипт для изменения переменных среды — добавлен файл .properties в переменную CLASSPATH
3. Это не очень переносимое и не очень стандартное решение. Возможно, вам следует сначала попробовать стандарты, прежде чем спрашивать себя, почему он больше не работает при переключении на другой контейнер сервлетов через два года…
4. Хорошо, спасибо за отзыв. Тогда попробую ваше решение.
5. Дайте мне знать, если это сработает, тогда я добавлю его в качестве ответа.