java.lang.NoClassDefFoundError:java / sql / Driver?

时间:2019-06-24 10:36:10

标签: java database postgresql driver servletexception

我正在尝试构建一个登录注册Web应用程序,该应用程序实质上允许用户在数据库上注册,然后允许他们登录。我已经编写了所有代码,并且试图将程序连接到数据库。这是我收到的错误:

Exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.NoClassDefFoundError: java/sql/Driver

我已将所有Postgres,Tomcat和SQL连接器/驱动程序jar添加到我的classpathWEB-INF/lib文件夹中。我不太确定该怎么办。我已经尝试过用另一个类进行测试,并且能够连接到数据库。我也仔细检查了我的连接URL。怎么了?

谢谢!

1 个答案:

答案 0 :(得分:0)

我知道这与Servlet无关,但是对于使用SQLite的模块应用程序,我也有同样的问题:

Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Driver
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:206)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:759)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:680)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:605)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
...
Caused by: java.lang.ClassNotFoundException: java.sql.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 14 more

开始时有些困惑,但是我终于想通了。我只需要将 java.sql requires 语句添加到module-info.java

module mymodule {
    ...
    requires sqlite.jdbc;
    requires java.sql;
}

需要sqlite.jdbc 已经存在,为清楚起见在上面添加了它)