У меня есть TranslateServlet
, который берет некоторый текст, создает экземпляр класса Cracker
и вызывает метод getCrackedResult
, который возвращает HashMap
ключей и значений:
public class TranslateServlet extends HttpServlet {
public static void main(String[] args) {
Cracker cracker = new Cracker("German", "English");
HashMap<String, ArrayList<Cracker.EntrySet<String, ArrayList<String>>>> crackedResults =
cracker.getCrackedResult("Ich bin");
for (String category: crackedResults.keySet()) {
System.out.print(category); //works fine
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Cracker cracker = new Cracker("German", "English");
HashMap<String, ArrayList<Cracker.EntrySet<String, ArrayList<String>>>> crackedResults =
cracker.getCrackedResult("Ich bin");
for (String category: crackedResults.keySet()) {
response.getWriter().print(category); //doesn't work
}
response.getWriter().print("DONE"); //works fine
}
}
Однако, хотя перебор по HashMap
внутри метода main
работает нормально, при попытке получить значения ключа с помощью метода doPost()
я получаю только DONE
в качестве вывода, и никаких других значений.Почему ??
РЕДАКТИРОВАТЬ: «Не работает» означает не выводить категории.Если основной метод выводит «Dog», «Cat», то на странице jsp выводятся только «Done», а не «Dog», «Cat», «Done».
Чего не хватает в моем вопросе?закрывать это?Спасибо также анонимному загрузчику.
РЕДАКТИРОВАТЬ : Я проверил журнал tomcat и каждый раз при вызове сервлета возникает ошибка java.io.FileNotFoundException: some_folder/some_file.bin
.
Я понял, чтоФункция getCrackedResult
использует локальный файл следующим образом:
InputStream inputPOS = new FileInputStream("some_folder/some_file.bin");
Я попытался переместить файл в WEB-INF
и изменить путь к файлу:
InputStream inputPOS = new FileInputStream("WEB-INF/some_folder/some_file.bin");
Но я все еще получаюисключение: java.io.FileNotFoundException: WEB-INF/some_folder/some_file.bin
.
Как мне поступить с файлом, чтобы класс Cracker
, в частности его функция getCrackedResults
, мог получить его после развертывания.Моя файловая структура выглядит так:
Project Root
------------src
---------------com
------------------util
----------------------Cracker.java
------------------web
---------------------TranslateServlet.java
------------target
------------------classes
-------------------------com
----------------------------util
--------------------------------Cracker.class
----------------------------web
-------------------------------TranslateServlet.class
------------imgs
------------some_folder
-----------------------some_file.bin
------------WEB-INF
-------------------classes
-------------------lib
-------------------some_folder
------------------------------some_file.bin (tried putting it here)