【问题标题】:No suitable driver found for jdbc:sqlite:database.db [duplicate]找不到适合 jdbc:sqlite:database.db 的驱动程序 [重复]
【发布时间】: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,而是配置一个数据源。

标签: java sqlite servlets jdbc


【解决方案1】:

你需要将sqlite-jdbc-3.21.0.jar添加到你的服务器类路径中,你可以把它放在你的tomcat服务器的lib文件夹中,也可以把这个jar放在你的服务器的WEB-INF/lib文件夹中你的项目。

【讨论】:

  • 遗憾的是没有改变任何东西(截图可能是我做错了image.prntscr.com/image/rE9lgF4LQCWUIB4yNPDQ-A.png
  • 您能否尝试在Connection connection = DriverManager.getConnection(url); 行之前添加此代码Class.forName("org.sqlite.JDBC");
  • 您能否分享一下您用于建立连接的 URL 字符串
  • 字符串 url = "jdbc:sqlite:database.db";连接连接 = DriverManager.getConnection(url);
  • 在添加 clss.forname 之后...我得到 java.sql.SQLException: opening db: 'database.db': Zugriff verweigert (拒绝访问的德语)
猜你喜欢
  • 2014-02-09
  • 2011-08-24
  • 2014-01-31
  • 2013-07-19
  • 1970-01-01
  • 2012-02-01
  • 2012-05-27
  • 2014-01-04
相关资源
最近更新 更多