【发布时间】:2016-07-10 09:23:06
【问题描述】:
我正在使用 Tomcat 8 构建一个项目。我想计算目录中所有文件中的单词数。我编写了一个函数,并希望发出一个 Rest Api GET 请求来运行该函数并返回计数。但是当我使用 PostMan 测试 API 调用时遇到了 NullPointerException。当我在本地运行该功能时,它运行良好。但是同样的功能不能在Tomcat 8服务器上运行。
以下是报错-
Servlet.service() for servlet [api.wordNum] in context with path [/Test] threw exception
java.lang.NullPointerException
at api.WordCountHandler.countWords(WordCountHandler.java:78)
at api.wordNum.doGet(wordNum.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
以下是我的代码 -
public static int countWords() {
File dir = new File("src/testfiles/");
int count = 0;
for (File file : dir.listFiles()) {
try {
Scanner s;
s = new Scanner(file);
while (s.hasNext()) {
count++;
}
s.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
System.out.println(count);
return count;
}
API 调用 -
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
int result = WordCountHandler.countWords();
response.getWriter().append(Integer.toString(result));
}
NullPointerException 发生在这一行-
for (File file : dir.listFiles()) {
【问题讨论】:
标签: java servlets nullpointerexception tomcat8