如何解决找不到适合 jdbc 的驱动程序:firebirdsql://localhost:3050
我使用 jaybird 依赖构建了一个 javafx maven 应用程序。从 IntelliJ 一切正常。 当我导出 jar 文件时,我收到此消息:
没有找到适合 jdbc 的驱动:firebirdsql://localhost:3050...
这是 pom.xml 的依赖部分:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>16</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>16</version>
</dependency>
<dependency>
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird-jdk16</artifactId>
<version>2.2.14</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
</dependencies>
解决方法
解决办法是: 右键单击 jaybird 依赖项(按照图片),然后单击 提取到输出根目录,然后重建工件 jar。
,发生此错误的正常原因是,您的类路径中没有 Jaybird(Firebird JDBC 驱动程序)或它所需的依赖项之一,或者驱动程序未注册。驱动程序注册通常会自动进行,但您始终可以尝试使用 Class.forName("org.firebirdsql.jdbc.FBDriver")
显式进行。如果失败,您会得到一个提供更多信息的堆栈跟踪。
如果您展示了一个包含 Jaybird(虽然是旧版本)的 Maven pom.xml,则驱动程序在编译时就存在。但是,根据您启动应用程序的方式,它可能不会出现在运行时类路径中。
有几个选项:
-
加载Java时显式指定驱动程序:
java -cp yourapp.jar;jaybird-4.0.3.java8.jar;connector-api-1.5.jar your.class.Name
此处,Jaybird 需要
jaybird-4.0.3.java8.jar
和connector-api-1.5.jar
才能工作。 -
在 JAR 的 manifest 的
jaybird-4.0.3.java8.jar
条目中列出所需的 JAR(connector-api-1.5.jar
和Class-Path
):Class-Path: jaybird-4.0.3.java8.jar connector-api-1.5.jar
两个 jar 文件都需要与您的 JAR 位于同一目录中。然后您可以启动您的应用程序(假设还指定了
Main-Class
属性):java -jar yourapp.jar
-
创建一个胖(或超级)JAR,并确保 Jaybird 的所有类和资源 - 及其所需的依赖项 - 都包含在您的 JAR 中。
-
(Web 应用程序)在应用程序服务器的库/模块(例如 Tomcat
lib
文件夹)中包含驱动程序(和依赖项),或确保驱动程序包含在 {{1 }} WAR 文件夹(Maven WAR 插件负责处理)。在最后一种情况下(WEB-INF/lib
中的驱动程序),有必要使用WEB-INF/lib
显式加载驱动程序以确保驱动程序已注册。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。