【问题标题】:SQLException: No suitable driver found for jdbc:derby://localhost:1527SQLException: 找不到适合 jdbc:derby://localhost:1527 的驱动程序
【发布时间】:2011-04-18 11:28:04
【问题描述】:

我在 Netbeans 中收到此错误:

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

这是怎么引起的,我该如何解决?

【问题讨论】:

标签: java jdbc derby


【解决方案1】:

java.sql.SQLException: 找不到适合 jdbc:derby://localhost:1527/ 的驱动程序

这个异常有两个原因:

  • 驱动程序未加载。
  • JDBC URL 格式不正确。

在您的情况下,我希望在连接字符串的末尾看到一个 数据库名称。例如(如果您希望在数据库不存在时创建数据库,请使用create=true):

jdbc:derby://localhost:1527/dbname;create=true

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

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

为了以防万一,请检查 derbyclient.jar 是否在类路径中,并且在服务器模式下工作时您正在加载适当的驱动程序 org.apache.derby.jdbc.ClientDriver

【讨论】:

    【解决方案2】:

    注意:您可以从here下载。

    如果找不到,那么

    1. 在项目选择选项卡中找到您的项目

    2. 右键单击“库”

    3. 点击“添加 JAR/文件夹...”

    4. 选择“derbyclient.jar”

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

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

    【讨论】:

      【解决方案3】:

      对我来说

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

      帮助。这样一来,DriveManager 确实知道了 derby EmbeddedDriver。也许分配一个新的 EmbeddedDriver 很重,但另一方面,Class.forName 需要我不太喜欢的 try/catch/doSomethingIntelligentWithException。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 其实我认为他们使用的是ClientDriver,而不是EmbeddedDriver,基于连接URL。所以应该是org.apache.derby.jdbc.ClientDriver。
        • 为我的联网 derby 实例切换到 derbyclient.jar 而不是 derby.jar 也是我的问题。
        【解决方案5】:

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

        1. 在项目选择选项卡中找到您的项目

        2. 右键单击“库”

        3. 点击“添加 JAR/文件夹...”

        4. 选择“derbyclient.jar”

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

        6. 确保您的 URL、用户名、密码正确,然后运行您的代码:)

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

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

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

            【讨论】:

              【解决方案8】:

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

              • 右击然后添加库
              • 添加 JAVA DB 驱动程序。

              我的项目正在运行!

              【讨论】:

                【解决方案9】:

                我也面临同样的问题。在使用连接 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);
                

                【讨论】:

                  【解决方案10】:

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

                  【讨论】:

                    【解决方案11】:

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

                    一切顺利

                    【讨论】:

                      【解决方案12】:

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

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

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

                      【讨论】:

                        【解决方案13】:

                        如果 Java DB 服务器尚未启动,您也会得到同样的错误。

                        【讨论】:

                          【解决方案14】:

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

                          启动脚本如下:

                          窗户:

                              <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat
                          

                          Linux:

                              <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
                          

                          【讨论】:

                            【解决方案15】:

                            当连接字符串的语法无效时会发生此错误。

                            您可以将连接字符串用作

                            'jdbc:derby:MyDbTest;create=true'
                            

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

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

                            【讨论】:

                              【解决方案16】:

                              我刚遇到这个问题,尝试了以上所有建议,但仍然失败。无需重复上面的建议,以下是我(您)可能遗漏的内容: 如果您使用的是 maven,可能会说明依赖关系,即:

                              <groupId>org.apache.derby</groupId>
                              <artifactId>derbyclient</artifactId>
                              <version>10.10.1.1</version>
                              

                              请注意版本。它必须与您正在运行的服务器实例兼容。

                              我通过放弃提供的 maven 依赖项并从“%JAVA_HOME%\db\lib”手动添加外部 jar 解决了我的问题,这与我正在运行的服务器的源相同。在这种情况下,我正在使用我的 Local 进行测试。

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

                              【讨论】:

                                【解决方案17】:

                                遇到了同样的问题。我正在做类似的事情:

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

                                用绝对路径替换路径解决了这个问题:

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

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

                                【讨论】:

                                  【解决方案18】:

                                  有同样的问题,通过使用定义 derby.jar 位置的类路径运行来解决。

                                  java -cp &lt;path-to-derby.jar&gt; &lt;Program&gt;

                                  更准确地说:

                                  java -cp "lib/*:." Program

                                  其中:. 包括当前目录。 lib/* 确实包含 jar 扩展名 (lib/*.jar)。

                                  【讨论】:

                                    【解决方案19】:

                                    我使用了上述答案,但没有任何效果。对我有用的是将依赖项放入项目中,就像上面所说的那样。

                                    然后进入依赖项文件夹,右键单击依赖项derbyshared.jar 和derbyclient.jar 并“添加本地源”。将这两个依赖项与 derby 文件夹中的本地 jar 文件连接起来,然后就完成了。也许只是 Netbeans 的问题

                                    【讨论】:

                                      猜你喜欢
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2013-04-13
                                      • 1970-01-01
                                      • 2016-10-29
                                      • 1970-01-01
                                      • 2018-05-04
                                      • 2016-01-05
                                      相关资源
                                      最近更新 更多