微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到适合 jdbc 的驱动程序:firebirdsql://localhost:3050

如何解决找不到适合 jdbc 的驱动程序:firebirdsql://localhost:3050

我使用 jaybird 依赖构建了一个 javafx maven 应用程序。从 IntelliJ 一切正常。 当我导出 jar 文件时,我收到此消息:

没有找到适合 jdbc 的驱动:firebirdsql://localhost:3050...

enter image description here

project structure

这是 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,则驱动程序在编译时就存在。但是,根据您启动应用程序的方式,它可能不会出现在运行时类路径中。

有几个选项:

  1. 加载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.jarconnector-api-1.5.jar 才能工作。

  2. 在 JAR 的 manifestjaybird-4.0.3.java8.jar 条目中列出所需的 JAR(connector-api-1.5.jarClass-Path):

    Class-Path: jaybird-4.0.3.java8.jar connector-api-1.5.jar
    

    两个 jar 文件都需要与您的 JAR 位于同一目录中。然后您可以启动您的应用程序(假设还指定了 Main-Class 属性):

    java -jar yourapp.jar
    
  3. 创建一个胖(或超级)JAR,并确保 Jaybird 的所有类和资源 - 及其所需的依赖项 - 都包含在您的 JAR 中。

  4. (Web 应用程序)在应用程序服务器的库/模块(例如 Tomcat lib 文件夹)中包含驱动程序(和依赖项),或确保驱动程序包含在 {{1 }} WAR 文件夹(Maven WAR 插件负责处理)。在最后一种情况下(WEB-INF/lib 中的驱动程序),有必要使用 WEB-INF/lib 显式加载驱动程序以确保驱动程序已注册。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。