java - 使用 Maven 在 Java 8 中找不到适合 jdbc 的驱动程序

标签 java maven jdbc firebird jaybird

我有一个使用 JDBC 和 FirebirdSQL 以及 Java 8 的 Maven 控制台应用程序,根据规范,不再需要添加类注册,所以 Class.forName("org.firebirdsql.jdbc. FBDriver"); 被注释,但是当我运行项目时我得到错误:No suitable driver found for jdbc:firebirdsql://localhost/database,但是如果我取消注释行它工作正常。

奇怪的是,如果我使用一个简单的控制台项目而不使用 Maven,它可以按照规范所说的注释行工作,所以问题是:是否有一种方法可以使用 Maven 来注释行类(class)注册?

最佳答案

看来您使用的是旧版本的 Jaybird(FirebirdSQL JDBC 驱动程序)。 2.2 及以上版本实现了 JDBC 4.0 规范,不需要 Class.forName() 语法。

Thanks to the Java SE Service Provider mechanism included in Mustang, Java developers no longer need to explicitly load JDBC drivers using code like Class.forName() to register a JDBC driver. The DriverManager class takes care of this by automatically locating a suitable driver when the DriverManager.getConnection() method is called.

因此,升级您的 Jaybird JDBC 驱动程序(下面的链接)并简单地省略 Class.forName() 方法。它是遗留的,JDBC 驱动程序(JDBC 4.0 及更高版本)不需要它。

根据 Jaybird 文档,您应该在 POM 中使用以下内容:

<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird-jdkXX</artifactId>
<version>2.2.9</version>
  • The artifactId depends on your target Java version: jaybird-jdk18, jaybird-jdk17, or jaybird-jdk16

http://www.firebirdsql.org/en/jdbc-driver/

http://www.onjava.com/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html

关于java - 使用 Maven 在 Java 8 中找不到适合 jdbc 的驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397889/

相关文章:

java - 从应用程序上下文返回 ObservableList<String>

java - 在 Tomcat 启动时自动启动 Quarz Scheduler

java - 如何解决异常java.sql.SQLException : No suitable driver found?

java - 如何强制释放资源?

java - Java中计算文件行数

java - 部署到 Pivotal Cloud Foundry 后,访问 jar 内的 xml 等资源文件

java - 在 Jenkins Slave 上使用 Maven

java - UnsatisfiedDependencyException Spring MVC 项目上下文根问题

java - 使用 Oracle JDBC 驱动程序 12c 的 Tomcat 7 上的内存泄漏 - oracle.jdbc.driver 线程无法停止

Java sql数据库登录