我在Netbeans中遇到这个错误:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
这是如何引起的?如何解决?
答案 0 :(得分:25)
java.sql.SQLException:没有为jdbc找到合适的驱动程序:derby:// localhost:1527 /
此异常有两个原因:
在您的情况下,我希望在连接字符串的末尾看到数据库名称。例如(如果您希望创建数据库,则使用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下载。
如果找不到,那么
在项目选择标签中找到您的项目
右键点击“图书馆”
点击“添加JAR /文件夹...”
选择“derbyclient.jar”
点击“打开”,然后您会在“图书馆”下看到“derbyclient.jar”
确保您的网址,用户名,密码正确无误并运行您的代码:)
答案 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应用程序时,我遇到了同样的问题。这是解决方案:
在项目选择标签中找到您的项目
右键点击“图书馆”
点击“添加JAR /文件夹...”
选择“derbyclient.jar”
点击“打开”,然后您会在“图书馆”下看到“derbyclient.jar”
确保您的网址,用户名,密码正确并运行您的代码:)
答案 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)
我通过将库添加到项目下面的库控制台来解决这个问题:
我的项目正在运作!
答案 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罐来解决。
遵循步骤-
转到“库”标签,然后单击“添加外部JAR”。
从路径中选择上述罐子C:\ Program Files \ Java \ jdk1.8.0_161 \ db \ lib
单击“确定”。
希望这会有所帮助:)
答案 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更改为指向数据库的路径。