Где разместить текстовые файлы, необходимые для Jars, на сервере Tomcat? - PullRequest
0 голосов
/ 13 марта 2011

У меня есть сервлет, а внутри каталога WEB-INF / lib у меня есть файл jar.Этот кувшин сделан из проекта, над которым я работаю.Код в проекте выполняется нормально и использует текстовые файлы в своем основном каталоге.Код Java, вызывающий эти файлы, не требует добавления какого-либо пути, IE: новый FileReader ("file.txt").

Проблема в том, что когда я вызываю сервлет, он продолжает выдавать исключения, которые он не может найти.TXT-файлы, необходимые для JAR.Я безуспешно разместил txt-файлы в следующих местах:

  • Главный каталог
  • Исходная папка
  • Пакет сервлета
  • WebContent
  • WEB-INF
  • WEB-INF / lib
  • META-INF

Я думаю, что я исчерпал все возможные места txtфайлы могут идти.Где же их искать в банке?

Спасибо

Ответы [ 3 ]

1 голос
/ 13 марта 2011

Взгляните на этот пост .

Это работает, когда вы выполняете его как проект, потому что этот относительный путь действительно действителен в файловой системе. Однако после того, как вы упаковали свое приложение как JAR, обычные методы чтения файла не будут работать, потому что ваши файлы внутри JAR, которые для файловой системы - это просто другой файл. Для чтения ресурсов, упакованных внутри вашего JAR-файла, вы должны использовать Class#getResource() или Class#getResourceAsStream() в зависимости от ситуации.

Вы также можете узнать, что говорит Java Glosarry на mindprod.com об этом:

0 голосов
/ 13 марта 2011

Я думаю, что ответ зависит от того, как запущен Tomcat, но часто каталогом по умолчанию является корневой каталог Tomcat.

Попробуйте в своем сервлете следующее:

ServletContext context = getServletConfig().getServletContext ();
String fullPath = context.getRealPath ("file.txt");
0 голосов
/ 13 марта 2011

Я думаю, что я исчерпал все возможные места, куда могли пойти txt файлы.Где, черт возьми, фляга ищет их?

Нет, ты не сделал.Поместите файл в каталог /bin внутри дистрибутива Tomcat.Эта конструкция:

new FileReader("file.txt")

ищет файл в текущем каталоге процесса.После запуска Tomcat это оказывается двоичный каталог, в котором содержатся все сценарии запуска (очень неудачное место).

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

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