Tomcat 8を使用してプロジェクトをビルドしています。ディレクトリ内のすべてのファイルで単語の数をカウントします。私は関数を記述し、関数を実行してカウントを返すRest Api GETリクエストを作成したいと思います。しかし、PostManを使用してAPI呼び出しをテストすると、NullPointerExceptionが発生します。私がローカルでこの関数を実行すると、それは良い仕事です。しかし、Tomcat 8サーバーでは同じ機能は動作しません。java.lang.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)
reported-誤差TIS以下は私のコードです -
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()) {
ありがとうございます。パス名を絶対パスに変更した後に問題が修正されました。 – Randal