如何在Tomcat中使用BSON解决ClassNotFoundException?

时间:2016-12-25 20:08:55

标签: java mongodb maven tomcat

我正在编写一个运行正常的Tomcat 8应用程序,除非我尝试在servlet的POST处理程序中实例化任何MongoDB类。

根据Java driver documentation,Mongo 3.0.x与Java 7兼容。如Installation Guide所述,建议使用bson和mongodb-driver-core作为依赖项的普通驱动程序。所以我在我的pom.xml中包含mongodb-driver并下载并将依赖项作为外部JAR(所有版本3.0.4)包含在内,但在运行servlet时收到了异常和堆栈跟踪。然后我尝试了Uber jar(mongo-java-driver),但没有产生任何影响。为了能够实例化一个Document,我只将BSON作为一个外部JAR,然后在我的pom.xml中,仍然没有变化。

我也尝试清理Eclipse / Maven项目和不同版本的依赖项。

MongoDB版本:3.2.11
Java编译器版本:1.7
驱动程序版本:3.0.4
Tomcat版本:8

堆栈追踪:

25-Dec-2016 14:17:41.196 SEVERE [http-nio-5000-exec-15] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Login] in context with path [/genebase] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.bson.Document
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147)
at seismic.servlet.Login.post(Login.java:17)
...

servlet:

import org.bson.Document;

import java.net.UnknownHostException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public abstract class Servlet extends HttpServlet {

    public void doPost(HttpServletRequest req, HttpServletResponse res) {
        try {
            new Document();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

可能导致此异常的原因是什么?

0 个答案:

没有答案