где я должен найти XML-файл, если я хочу проанализировать его в сервлете Java - PullRequest
2 голосов
/ 28 ноября 2010

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

вот исключение

java.io.FileNotFoundException: FormFieldsNames.xml (The system cannot find the file specified)

Я пытался поместить XML-файл в направлении проекта, в пакете java src и внутри пакета сервлетов, но все эти попытки дают один и тот же результат.

где я должен найти XML-файл, пожалуйста, помогите и спасибо заранее.

Ответы [ 3 ]

4 голосов
/ 28 ноября 2010

Распространенной проблемой при чтении файлов из classpath является правильное расположение в вашем файле WAR.

В Java сервлет MyServlet может ссылаться на файл, подобный этому

InputStream is=MyServlet.getClass().getResourceAsStream("/path/to/file/example.txt")

, который найдет файл, хранящийся в

WEB-INF/classes/path/to/file/example.txt

Обратите внимание на ведущий / который частоловит людей.

Контейнер приложения может читать из локальной файловой системы (например, если вы хотите получить внешние свойства и не хотите использовать JNDI).Для этого вы должны использовать обычный процесс доступа к файлу:

InputStream fis = FileInputStream(new File("/usr/share/myapp/another-example.txt"));

Конечно, если вы хотите указать DOM на него, MyServlet может содержать следующее:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
InputStream is = MyServlet.getClass().getResourceAsStream("/path/to/my/example.xml");
Document document = documentBuilder.parse(new InputSource(is));
// And start exploring the NodeList...
NodeList nodeList = document.getFirstChild().getChildNodes();

Это должносделать трюк.

2 голосов
/ 28 ноября 2010

Обычные местоположения:

  • WEB-INF/ - получено getServletContext().getResourceAsStream(..)
  • WEB-INF/classes - получено либо выше, либо getClass().getResourceAsStream(..)
1 голос
/ 28 ноября 2010

Если вы включите его в файл jar / war, вы сможете легко загрузить его с помощью Class.getResourceAsStream или ClassLoader.getResourceAsStream. Сделайте это вместо того, чтобы пытаться загрузить его как фактический файл в файловой системе.

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