臭名昭着的java.sql.SQLException:找不到合适的驱动程序

Ric*_*yne 72 postgresql tomcat jdbc geoserver

我正在尝试将已启用数据库的JSP添加到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话).

该应用程序本身与Postgres谈话很好,所以我知道数据库已启动,用户可以访问它,所有这些好东西.我想要做的是在我添加的JSP中的数据库查询.我已经在Tomcat数据源示例中使用了配置示例,非常开箱即用.必要的taglibs位于正确的位置 - 如果我只有taglib refs就不会发生错误,因此它会找到那些JAR.postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME/common/lib中.

这是JSP的顶部:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/mmas">
  select current_validstart as ValidTime from runoff_forecast_valid_time
</sql:query>
Run Code Online (Sandbox Code Playgroud)

来自$ CATALINA_HOME/conf/server.xml的相关部分,其内部<Host>依次是<Engine>:

<Context path="/gs2" allowLinking="true">
  <Resource name="jdbc/mmas" type="javax.sql.Datasource"
      auth="Container" driverClassName="org.postgresql.Driver"
      maxActive="100" maxIdle="30" maxWait="10000"
      username="mmas" password="very_secure_yess_precious!"
      url="jdbc:postgresql//localhost:5432/mmas" />
</Context>
Run Code Online (Sandbox Code Playgroud)

这些行是webapps/gs2/WEB-INF/web.xml中标记的最后一行:

<resource-ref>
  <description>
     The database resource for the MMAS PostGIS database
  </description>
  <res-ref-name>
     jdbc/mmas
  </res-ref-name>
  <res-type>
     javax.sql.DataSource
  </res-type>
  <res-auth>
     Container
  </res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)

最后,例外:

   exception
    org.apache.jasper.JasperException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
    [...wads of ensuing goo elided]
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 95

臭名昭着的java.sql.SQLException:找不到合适的驱动程序

此异常基本上有两个原因:

1.未加载JDBC驱动程序

您需要确保将JDBC驱动程序放在服务器自己的/lib文件夹中.

或者,当您实际上没有使用服务器管理的连接池数据源,但是DriverManager#getConnection()在WAR 中手动摆弄时,则需要将JDBC驱动程序放在WAR中/WEB-INF/lib并执行..

Class.forName("com.example.jdbc.Driver");
Run Code Online (Sandbox Code Playgroud)

..在第一次调用之前的代码中,DriverManager#getConnection()确保不会吞下/忽略任何ClassNotFoundException可以抛出的代码并继续代码流,就像没有异常发生一样.另请参见在何处为Tomcat的连接池放置JDBC驱动程序?

2.或者,JDBC URL的语法错误

您需要确保JDBC URL符合JDBC驱动程序文档,并记住它通常区分大小写.当JDBC URL不会返回true用于Driver#acceptsURL()对任何加载的驱动程序,那么你也将获得正是这种例外.

在的情况下,PostgreSQL的是记录在这里.

使用JDBC,数据库由URL(统一资源定位符)表示.使用PostgreSQL™,它采用以下形式之一:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

在的情况下,MySQL的它被记录在这里.

用于连接MySQL服务器的JDBC URL的一般格式如下,方括号([ ])中的项是可选的:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

如果是Oracle,请在此处进行说明.

有两种URL语法,旧语法只适用于SID,新语法适用于Oracle服务名称.

旧语法 jdbc:oracle:thin:@[HOST][:PORT]:SID

新语法 jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE


也可以看看:

  • 谢谢,您的JDBC连接字符串格式非常有用! (2认同)

ara*_*nid 15

url="jdbc:postgresql//localhost:5432/mmas"
Run Code Online (Sandbox Code Playgroud)

该URL看起来不对,您需要以下内容吗?

url="jdbc:postgresql://localhost:5432/mmas"
Run Code Online (Sandbox Code Playgroud)


Vin*_*ngh 9

我遇到了类似的问题.上下文中的项目是Dynamic Web Project(Java 8 + Tomcat 8),错误是针对PostgreSQL驱动程序异常:找不到合适的驱动程序

它通过Class.forName("org.postgresql.Driver")在调用getConnection()方法之前添加来解决

这是我的示例代码:

try {
            Connection conn = null;
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode="
                    + sql_auth,sql_user , sql_password);
        } catch (Exception e) {
            System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage());
        }
Run Code Online (Sandbox Code Playgroud)


Man*_*ger 6

我忘了将PostgreSQL JDBC驱动程序添加到项目Mvnrepository中

摇篮

// http://mvnrepository.com/artifact/postgresql/postgresql
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4'
Run Code Online (Sandbox Code Playgroud)

Maven

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.0-801.jdbc4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

您也可以下载JAR手动和导入到项目中。


归档时间:

查看次数:

120261 次

最近记录:

6 年,1 月 前