我正在尝试编写一个非常简单的 servlet,它必须从 csv 文件中提取数据并显示结果,代码如下:
Reader reader = new FileReader(filePath);
CSVReader csvReader = new CSVReader(reader);
String[] data;
PrintWriter out = response.getWriter();
response.setContentType("text/html");
while((data = csvReader.readNext()) != null){
//do something
}
但后来我收到了这个日志:
Type Exception Report
Message Servlet execution threw an exception
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.NoClassDefFoundError: org/apache/commons/lang3/ObjectUtils com.opencsv.CSVParser.(CSVParser.java:209) com.opencsv.CSVReader.(CSVReader.java:196) com.opencsv.CSVReader.(CSVReader.java:178) com.opencsv.CSVReader.(CSVReader.java:130) com.opencsv.CSVReader.(CSVReader.java:70) TheClass.doGet(TheClass.java:19) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note
The full stack trace of the root cause is available in the server logs.
我设置了 tomcat-websocket CLASSPATH 并将 jar 文件复制到 WEB-INF 的 lib 目录中,但没有一个受到影响。 当我们创建 CSVReader 类时,问题就出现了。有人帮忙吗?
最佳答案
您是说您有 opencsv 的 jar 文件,但是您有依赖项的 jar 文件吗? Opencsv 依赖于两到三个 apache commons 库,具体取决于您使用的 opencsv 版本。最新版本的依赖可以在 http://opencsv.sourceforge.net/dependencies.html 找到。
如果您使用 maven 或 gradle 构建项目,则这些依赖项应该已包含在您的 war 文件中。您如何构建/部署您的应用程序?
关于servlets - java.lang.NoClassDefFoundError : org/apache/commons/lang3/ObjectUtils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674928/