Java SQLException:未找到适合jdbc的驱动程序:derby://localhost:1527

Java SQLException:未找到适合jdbc的驱动程序:derby://localhost:1527,java,jdbc,derby,Java,Jdbc,Derby,我在Netbeans中遇到了以下错误: java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/ 这是如何导致的,我如何解决它?JDBCDriverManager无法为给定的连接URL找到任何合适的驱动程序。连接数据库之前根本没有加载JDBC驱动程序,或者连接URL错误。由于连接URL看起来不错,我打赌驱动程序根本没有加载。在连接数据库之前,需要在应用程序启动期间加载驱动程序。对于Apach

我在Netbeans中遇到了以下错误:

java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/

这是如何导致的,我如何解决它?

JDBC
DriverManager
无法为给定的连接URL找到任何合适的
驱动程序。连接数据库之前根本没有加载JDBC驱动程序,或者连接URL错误。由于连接URL看起来不错,我打赌驱动程序根本没有加载。在连接数据库之前,需要在应用程序启动期间加载驱动程序。对于ApacheDerby,驱动程序类名是
org.Apache.Derby.jdbc.ClientDriver
。因此:

Class.forName("org.apache.derby.jdbc.ClientDriver");
java.sql.SQLException:未找到适合jdbc的驱动程序:derby://localhost:1527/

此异常有两个原因:

  • 驱动程序未加载
  • JDBC URL的格式不正确
在您的情况下,我希望在连接字符串的末尾看到一个数据库名称。例如(如果希望在数据库不存在时创建数据库,请使用
create=true
):

默认情况下,数据库是在启动网络服务器的目录中创建的。但也可以指定数据库位置的绝对路径:

jdbc:derby://localhost:1527//home/pascal/derbyDBs/dbname;create=true

以防万一,检查类路径上是否有derbyclient.jar,以及在服务器模式下工作时是否加载了相应的驱动程序
org.apache.derby.jdbc.ClientDriver

也可能在persistence.xml中,当jdbc url指向derby服务器时使用了EmbeddedDriver。在这种情况下,只需将url更改为指向数据库的路径。

如果您使用嵌入式Derby,您需要在类路径中使用Derby.jar。

DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());

有帮助。这样,DriveManager就知道derby EmbeddedDriver了。也许分配一个新的嵌入式驱动程序太重了,但另一方面,Class.forName需要try/catch/dosomethingintelligent,我不太喜欢这个例外。

如果数据库已经创建,并且您已经开始连接到,那么您所需要的就是添加驱动程序jar。在项目窗口中,右键单击libraries文件夹,转到c:programsfiles\sun\javadb\lib\derbyclient.jar。加载文件,您应该能够运行


最好的

我在Netbeans上编写Java应用程序时遇到了同样的问题。以下是解决方案:

  • 在“项目选择”选项卡中查找您的项目

  • 右键单击“库”

  • 单击“添加JAR/文件夹…”

  • 选择“derbyclient.jar”

  • 单击“打开”,然后您将在“库”下看到“derbyclient.jar”

  • 确保您的URL、用户名、密码正确无误,并运行代码:)


  • 注意:您可以从下载

    如果你找不到,那么

  • 在“项目选择”选项卡中查找您的项目

  • 右键单击“库”

  • 单击“添加JAR/文件夹…”

  • 选择“derbyclient.jar”

  • 单击“打开”,然后您将在“库”下看到“derbyclient.jar”


  • 确保您的URL、用户名和密码正确无误,然后运行您的代码:)

    问题已得到回答,但提供了一个用于说明的命令行。当我尝试一个尽可能简单的连接到网络模式derby的测试时,这对我来说很有效

    • 应用程序中加载的驱动程序为:Class.forName(“org.apache.derby.jdbc.ClientDriver”).newInstance()

    • 连接URL是:“jdbc:derby://localhost:1527/myDB;create=true“

    • 我使用java-classpath derbyclient.jar运行我的应用程序。myAppClass


    我尝试了此线程中提到的所有内容,只有.registerDriver()对我有效。这就是我的代码部分现在的样子:

    DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
    connection = DriverManager.getConnection(url, user, pass);
    

    请注意,问题不在嵌入式Derby中。

    我通过将库添加到项目下方的库控制台来解决此问题:

    • 右键单击,然后添加库
    • 添加JavaDB驱动程序

    我的项目成功了

    如果Java DB服务器尚未启动,也可能会出现相同的错误。

    我也面临同样的问题。在使用连接URL和用户凭据获取连接之前,我缺少DriverManager.registerDriver()调用

    它在Linux上得到了如下修复:

    DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
    connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);
    
    对于Windows:

    DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
    connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass);
    

    您可能无法启动Derby服务器。 一旦derby服务器启动,它就开始侦听默认端口1527

    启动脚本位于以下位置:

    DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
    connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);
    
    窗口:

        <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat
    
    /bin/startNetworkServer.bat
    
    Linux:

        <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
    
    /bin/startNetworkServer
    
    当连接字符串的语法无效时,会发生此错误

    您可以将连接字符串用作

    'jdbc:derby:MyDbTest;create=true'
    

    您可以在命令提示符下使用以下命令,下面的命令成功地创建了一个名为
    MyDbTest
    的新数据库:

    connect 'jdbc:derby:MyDbTest;create=true';
    

    我只是遇到了这个问题,尝试了以上所有的建议,但还是失败了。在不重复上述建议的情况下,以下是我(你)可能缺少的东西: 如果您使用的是maven,您可能会声明依赖项,即:

    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.10.1.1</version>
    
    org.apache.derby
    德比客户机
    10.10.1.1
    
    请小心这个版本。它必须与正在运行的服务器实例兼容

    我解决了这个问题,放弃了maven依赖项提供的功能,从“%JAVA\u HOME%\db\lib”手动添加外部jar,这与我运行的服务器的源代码相同。在本例中,我正在使用本地服务器进行测试


    因此,如果您使用远程服务器实例进行测试,请查找服务器包附带的derbyclient.jar。

    遇到了相同的问题。我做了一些类似于:

    connect'jdbc:derby://localhost:1527/~/databases/db1'

    将路径替换为绝对路径修复了此问题:

    connect'jdbc:derby://localhost:1527//Users/ayush99/databases/db1“

    总之:避免在现有数据库的路径中使用
    ~
    或任何此类变量。