我正在编写webApp,使用jsp文件直接调用java类来获取结果。
JSP文件如下:
<%
String queryKey = request.getParameter("id");
int jobID = Integer.parseInt(queryKey);
out.println(jobID);
ArrayList<Integer> myTopList = JobRecByBoWJaccard.topJobsByBoW(jobID);
%>
在java类中,可以通过以下方式访问文件:
BufferedReader br = new BufferedReader(new FileReader("WebContent/StopWords/stop-words-english1.txt"));
和
private InputStream modelInputT = new FileInputStream("WebContent/OpenNLP_Models/en-token.bin");
tomcat找不到引用的文件,有人说使用getResourceAsStream,但这是针对servlet的。我直接调用java类而没有任何servlet。
private InputStream modelInputT = = this.getClass().getClassLoader().getResourceAsStream("WebContent/OpenNLP_Models/en-token.bin");
这导致java类也无法找到该文件。需要帮助以及如何更改这些java类?
答案 0 :(得分:1)
tomcat无法找到引用的文件...
这是因为路径名不正确,除非JVM的当前目录是“WebContent”目录的父目录。使用FileInputStream
打开文件时,相对路径名将在启动时相对于JVM 的当前目录进行解析。
...有人说使用getResourceAsStream,但这是针对servlet的。
没有。这也不正确。该方法不是“for servlets”。该方法的目的是打开类/类加载器的类路径上的资源。如果您的“WebContent / StopWords / stop-words-english1.txt”位于webapp的“/ WEB-INFO / classes”或“/ WEB-INFO / lib”中的JAR文件中,那么getResourceAsStream
将会找到它
在您的情况下,您似乎在谈论与默认servlet对应的“WebContent”目录。
在这种情况下,请阅读此Q&amp; A - How can I get real path for file in my WebContent folder?。
因此,如果您尝试从JSP中访问这些文件,似乎您应该写这个:
new FileReader("WebContent/StopWords/stop-words-english1.txt")
这样:
new FileReader(getServletContext().getRealPath(
"/StopWords/stop-words-english1.txt"))