SQLException:没有为jdbc找到合适的驱动程序:derby:// localhost:1527

时间:2010-09-28 18:46:05

标签: java jdbc derby

我在Netbeans中遇到这个错误:

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

这是如何引起的?如何解决?

19 个答案:

答案 0 :(得分:25)

  

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

此异常有两个原因:

  • 未加载驱动程序。
  • JDBC网址格式错误。

在您的情况下,我希望在连接字符串的末尾看到数据库名称。例如(如果您希望创建数据库,则使用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

答案 1 :(得分:17)

注意:您可以从here下载。

如果找不到,那么

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

  2. 右键点击“图书馆”

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

  4. 选择“derbyclient.jar”

  5. 点击“打开”,然后您会在“图书馆”下看到“derbyclient.jar”

  6. 确保您的网址,用户名,密码正确无误并运行您的代码:)

答案 2 :(得分:11)

对我来说

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

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

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

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

  2. 右键点击“图书馆”

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

  4. 选择“derbyclient.jar”

  5. 点击“打开”,然后您会在“图书馆”下看到“derbyclient.jar”

  6. 确保您的网址,用户名,密码正确并运行您的代码:)

答案 5 :(得分:2)

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

答案 6 :(得分:2)

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

  • 在app中加载的驱动程序:Class.forName(“org.apache.derby.jdbc.ClientDriver”)。newInstance();

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

  • 我使用以下命令运行我的应用程序:java -classpath derbyclient.jar:。 myAppClass

答案 7 :(得分:2)

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

  • 右键单击,然后添加库
  • 添加JAVA DB DRIVER。

我的项目正在运作!

答案 8 :(得分:1)

我遇到了同样的问题。在使用连接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);

答案 9 :(得分:0)

具有相同的功能,可以通过使用定义derby.jar位置的类路径来解决。

java -cp <path-to-derby.jar> <Program>

更准确地说:

java -cp "lib/*:." Program

:.包含当前目录。并且lib/* 不包括 jar 扩展名(lib/*.jar)。

答案 10 :(得分:0)

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

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

用绝对路径替换路径可解决此问题:

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

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

答案 11 :(得分:0)

我遇到了类似的问题,并且通过在Eclipse的类路径中包含derby.jar,derbyclient.jar,derbynet.jar和derbytools.jar罐来解决。

遵循步骤-

  1. 右键单击您的项目,然后选择构建路径->配置构建路径。
  2. 转到“库”标签,然后单击“添加外部JAR”。

  3. 从路径中选择上述罐子C:\ Program Files \ Java \ jdk1.8.0_161 \ db \ lib

  4. 单击“确定”。

希望这会有所帮助:)

答案 12 :(得分:0)

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

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

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

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

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

答案 13 :(得分:0)

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

您可以将连接字符串用作

'jdbc:derby:MyDbTest;create=true'

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

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

答案 14 :(得分:0)

您可能缺少启动Derby服务器。 一旦德比服务器启动,它就会开始侦听默认端口1527。

启动脚本位于以下位置:

视窗:

    <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat

Linux的:

    <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer

答案 15 :(得分:0)

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

答案 16 :(得分:0)

我尝试了这个帖子中提到的所有内容,只有.registerDriver()为我工作。这就是我现在的代码部分:

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

请注意,嵌入式Derby中的问题并非如此。

答案 17 :(得分:0)

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

一切顺利

答案 18 :(得分:0)

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