我有一個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輸出,沒有其他值。為什么??編輯: “不起作用”意味著不輸出類別。如果main方法輸出“Dog”、“Cat”,jsp頁面只輸出“Done”,而不是“Dog”、“Cat”、“Done”。我的問題有什么問題足以關閉它?也感謝匿名投票者。編輯:我檢查了tomcat的日志,java.io.FileNotFoundException: some_folder/some_file.bin每次調用servlet時都會出錯。我意識到該函數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.
2 回答

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
解決方案:
請在正確的位置部署(?。?code>/WEB-INF/some_file/some.bin,然后您可以FileInputStream
從 servlet 環境訪問它,例如:
java.io.InputStream inS = /*httpRequest.get*/servletContext .getResourceAsStream("/WEB-INF/some_file/some.bin");

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
現在,我設法修復它
InputStream inputPOS = Cracker.class.getClassLoader().getResourceAsStream("some_folder/some_file.bin");
解決方案并將some_folder/some_file.bin
兩者都放在里面
Project Root/target/classes
(這樣代碼就可以在 IDE 中運行)
和
Project Root/WEB-INF/classes
(以便該代碼在部署在 tomcat 上時可以工作)。
添加回答
舉報
0/150
提交
取消