Java SQLException:未找到适合jdbc的驱动程序:derby://localhost:1527
我在Netbeans中遇到了以下错误: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
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“
总之:避免在现有数据库的路径中使用~
或任何此类变量。