13

我遵循了 JDBC 教程:http ://docs.oracle.com/javase/tutorial/jdbc/basics/gettingstarted.html ,并成功地构建和创建了我自己的 JDBC 数据库,没有大惊小怪。但是现在当尝试从 java 应用程序连接到数据库时,我收到了异常:

java.sql.SQLException: 找不到适合 jdbc:derby: db 目录的驱动程序

然后在尝试使用以下方法手动指定 JDBC 驱动程序时:

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

我收到以下异常错误:

java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

我很肯定该驱动程序在加载时应该没有问题,因为这是教程中指定的驱动程序,并且使用该驱动程序创建数据库没有问题。我已经尝试在连接语句的末尾添加属性“;create=true”以尝试创建一个全新的数据库,但我仍然收到相同的异常错误。

请在下面查看我的应用程序代码。任何帮助都会很棒:)。

package com.ddg;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class SQLConnect
{
    Connection Conn = null;
    String URL;
    String Username;
    String Password;

    public SQLConnect()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        }
        catch (ClassNotFoundException e)
        {
            System.out.println(e.toString());
        }
        URL = "jdbc:derby:*directory name*";

        System.out.println("Created SQL Connect");
    }

    public void CreateConnection()
    {
        try
        {
            Conn = DriverManager.getConnection(URL);
            System.out.println("Successfully Connected");
        }
        catch (SQLException e)
        {
            System.out.println(e.toString());
        }
    }

    public void CloseConnection()
    {
        try
        {
            this.Conn.close();
            System.out.println("Connection successfully closed");
        }
        catch (SQLException e)
        {
            System.out.println(e.toString());
        }
    }

    public static void main(String args[])
    {
        SQLConnect sql = new SQLConnect();
        sql.CreateConnection();
        sql.CloseConnection();
    }
}
4

10 回答 10

11

java.sql.SQLException:找不到适合 jdbc:derby:db 目录的驱动程序

因此,您的错误可能是由以下原因引起的:

驱动程序未正确加载或您URL的格式错误。所以首先你需要确保你*.jar在类路径中。看看这个。

还尝试将您的更改URL为:

jdbc:derby://<path>/<databasename>;create=true

create=true将确保如果不存在 db 将被创建。

更新:

还请查看此标题:SQLException: 找不到适合 jdbc:derby://localhost:1527 的驱动程序

于 2013-03-17T09:41:51.383 回答
7

如果您遇到此类错误

java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver

并且您正在使用,netbeans那么您必须按照以下步骤操作:

  1. 右键单击库
  2. 选择添加库选项并从库列表中选择“Java DB Driver”

在此处输入图像描述

于 2016-02-19T07:59:45.493 回答
5

Java JDK 两者都带有

org.apache.derby.jdbc.EmbeddedDriver
org.apache.derby.jdbc.ClientDriver

在 Eclipse 中,将以下 jars 添加到使用的 JRE(JDK) 或显式添加到您的项目中。

[JDK]db/lib/derby.jar (EmbeddedDriver)
[JDK]db/lib/derbyclient.jar (ClientDriver)

对于 runtine,您需要使适当的 jar 可用于您的 java 应用程序。

于 2016-05-12T10:50:05.443 回答
2

您说您已按照教程进行操作。在本教程中,您必须安装 JDBC 驱动程序。

安装 JDBC 驱动程序通常包括将驱动程序复制到您的计算机,然后将其位置添加到您的类路径中。

安装驱动程序后运行

java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

这只有在你弄乱了正确的潜水员时才有可能。

你用过

org.apache.derby.jdbc.EmbeddedDriver

加载驱动程序

但应该使用

org.apache.derby.jdbc.ClientDriver
于 2013-03-17T09:48:46.717 回答
1

有关详细信息,请参阅https://db.apache.org/derby/papers/DerbyTut/install_software.html#derby_configure上的“设置 DERBY_INSTALL”和“配置嵌入式 Derby”部分。

Derby 是 JavaSE 安装的一部分,我设置了环境变量DERBY_HOME,而不是DERBY_INSTALL在链接中显示。

C:\> set DERBY_HOME=c:\Program Files\Java\jdk1.8.0_60\db
C:\> set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;.
C:\> cd %DERBY_INSTALL%\bin
c:\Program Files\Java\jdk1.8.0_60\db\bin> setEmbeddedCP.bat
于 2015-10-24T16:13:43.833 回答
1

我在使用ClientDriver时得到了java.lang.ClassNotFoundException。我使用了最新的驱动程序二进制文件,这是错误的。

当时,最新的驱动程序二进制文件是 10.15.1.3,就在这里:Apache Site

我在 Java 8 上,我使用 Hibernate 5.4.2.Final。然而,驱动程序是针对 Java 9 编译的!

于 2019-05-14T16:08:00.537 回答
0

我已经将任何需要的 jdbc 驱动程序放在例如 jre\lib\ext 目录中。在我的系统上是: X:\Java\jre1.8.0_181\lib\ext 希望有帮助。

于 2019-03-30T21:27:14.357 回答
0

我最近发现,如果您使用jlink创建运行时,您可能需要包含额外的 jdk 模块以允许驱动程序实例化。

就我而言,我需要在图像中包含java.namingjava.management模块。

于 2020-06-04T08:26:52.770 回答
0

所以我遇到了这个错误,解决这个问题是一项非常令人恼火和忙碌的任务。但最后,我设法找到了一个完美的视频,让我从一开始就安装了 derby,并完美地指导了我如何安装它。但是,视频之后还有一步。

如果您已经设置了 JavaFX 包并且能够正常运行程序,但面临
“java.sql.SQLException:没有为 jdbc:derby://localhost:1527/DBNAME;create=true”问题找到合适的驱动程序,请观看此视频尝试使用数据库运行时。

链接到教程

现在设置完成后,您现在将能够启动/停止数据库(通过服务选项卡)并能够与数据库连接。但是在尝试编辑数据库时问题仍然存在。

要纠正此问题,请按照以下步骤操作 ->

右击项目 ---> 属性 --->---> 点击类路径中的'+' ---> 添加jar/文件夹 --->进入derby里面的lib文件夹并选择derbyclient.jar

版本

JAVA - 17.0.1,Netbeans - 12.6

希望它有所帮助,谢谢:)

于 2021-12-05T21:34:43.643 回答
0

这似乎是一个古老的问题,并导致我和该线程中的其他人感到非常沮丧。尽管在 Eclipse IDE 测试工具中成功运行了测试,但如果通过网络连接调用,应用程序将无法加载嵌入式驱动程序。

几乎没有证据,我将建议问题出在 Derby 以及它搜索classpath驱动程序的方式和延迟导致并发问题,因为它在其工作区之外搜索时无法及时找到驱动程序。SharedLibraries我已经多次重复这个测试,只有在程序的工作区中创建一个项目,然后将这个共享库添加到libraries classpath屏幕截图中,才能实现一致性。

在此处输入图像描述

您可以使用Project->Properties->Java Build Path->Libraries. 这种方法的唯一缺点是您不知道库的来源及其版本,但是如果这是一个问题,只需将版本号添加到库文件即可克服这一问题。

于 2021-12-29T00:06:00.267 回答