【发布时间】:2018-07-09 20:27:10
【问题描述】:
我想将 SQLite 与我的 Java Servlet 服务器一起使用。所以我写了一个单例数据库控制器,我在我的 servlet 内的 init 函数中初始化它。当我到达以下行时
Connection connection = DriverManager.getConnection(url);
我遇到了这个异常:
java.sql.SQLException: No suitable driver found for jdbc:sqlite:database.db
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Controller.Database.SQLiteDataBase.getInstance(SQLiteDataBase.java:22)
at Controller.Servlets.login.loginController.init(loginController.java:45)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1174)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1090)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:770)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:417)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
我在我的 servlet 应用程序之外的一个新项目中进行了测试,一切正常。
我正在使用 Eclipse Jee Oxygen 并使用 Add External JARs.. 添加 sqlite-jdbc-3.21.0.jar
我能做些什么来解决这个问题?我已经尝试了 .db 文件的绝对路径和相对路径。
【问题讨论】:
-
您在 tomcat 中部署的项目中遇到此错误?这是一场战争吗?战争里面有sqllite jar吗?
-
对不起,我是 Java 新手/我不太懂编程。我在我的控制台上收到此错误
-
您应该将 Connector/J 库放在 Tomcat
lib文件夹中,或者 - 如果与您的应用程序一起部署 - 您需要使用Class.forName显式加载驱动程序,因为自动加载驱动程序不会不适用于不在系统类路径上的驱动程序。但是,您不应该使用DriverManager,而是配置一个数据源。