2012-05-16 2 views
1

Я разрабатываю веб-приложение Maven в NetBeans 7.1.1 с Apache Tomcat 7.0.22 в качестве сервера. При запуске или отладке приложения классы Java предполагают «/home/user/apache-tomcat-7.0.22/bin/» в качестве базы для файлов.NetBeans Maven {tomcat_base}/bin в качестве ложного пути к классам

Например, при создании нового файла с помощью «Writer rssFile = new FileWriter (« test.xml »)», этот новый файл создается как «/home/user/apache-tomcat-7.0.22/bin /test.xml».

При поиске изображений или других файлов возникает та же проблема. Он начинает поиск в «/home/user/apache-tomcat-7.0.22/bin» ...

Файлы проекта не находятся в базе Tomcat, поэтому я не знаю, почему bin-папка используется в качестве базы для пути к классам. .. В кодовой клиентской стороне (например. * .jsp) найдены правильные пути, но не в серверном коде (классы Java)!

Эта проблема аналогична упомянутой другим пользователем в https://stackoverflow.com/questions/7774446/netbeans-setting-default-current-directory-for-tomcat, но никаких решений не было дано.

Это может быть ошибка с плагином NetBeans Maven? Как решить эту проблему?

ответ

2

Если вы связаны с использованием Tomcat, то вы можете использовать два системных свойства:

  • catalina.home - Где кот установлен (/home/user/apache-tomcat-7.0.22)
  • catalina.base - Где базируется экземпляра Tomcat (обычно тот же как указано выше, но может быть настроена так, чтобы несколько экземпляров Tomcat для запуска всех на основе из одних и тех же общих двоичных файлов)

Таким образом, вы можете использовать:

new File(System.getProperty("catalina.base") + "/conf/test.xml"); 

Если вы пытаетесь загрузить ресурсы, которые поставляются в вашу войну есть некоторые другие вещи вы делаете, чтобы загрузить ресурсы с контейнерными независимым:

  • Если ресурсы находятся в папке WEB-INF/classes вы можете загрузить их, используя в качестве InputStreams с помощью:

    Classloader.getResourceAsStream("/test.xml"); 
    
  • Если вы используете 2,5 сервлета спецификации или за его пределами, и у вас есть доступ к ServletContext (или HttpServletRequest или HttpSession, из которого можно развернуть, чтобы приобрести ServletContext):

    ServletContext.getRealPath("/"); // will return the root of your web app 
    
+0

Спасибо вам Крис. Я попробую. – ricardoc

Смежные вопросы