SQLException:找不到适用于jdbc:derby:// localhost:1527的驱动程序
我在Netbeans中得到这个错误:
java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/
这是如何造成的,我该如何解决?
java.sql.SQLException:找不到适合jdbc的驱动程序:derby:// localhost:1527 /
这个例外有两个原因:
- 该驱动程序未加载。
- JDBC URL格式不正确。
在你的情况,我希望看到一个数据库名称在连接string的末尾。 例如(如果您希望数据库在不存在的情况下创build,则使用create=true
):
jdbc:derby://localhost:1527/dbname;create=true
数据库默认情况下在networking服务器启动的目录中创build。 但是,您也可以指定数据库位置的绝对path:
jdbc:derby://localhost:1527//home/pascal/derbyDBs/dbname;create=true
为了以防万一,请检查derbyclient.jar是否在类path中,并且在服务器模式下工作时是否加载了合适的驱动程序org.apache.derby.jdbc.ClientDriver
。
注意:你可以从这里下载。
如果你找不到,那么
-
在项目select选项卡中find您的项目
-
右键单击“库”
-
点击“添加JAR /文件夹…”
-
select“derbyclient.jar”
-
点击“打开”,你会在你的“库”下看到“derbyclient.jar”
确保你的URL,用户名,密码是正确的,并运行你的代码:)
为了我
DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver());
帮助。 通过这种方式,DriveManager确实知道derby EmbeddedDriver。 也许分配一个新的EmbeddedDriver是沉重的,但另一方面,Class.forName需要try / catch / doSomethingIntelligentWithException,我不太喜欢。
JDBC DriverManager
无法为给定的连接URLfind适合的Driver
。 在连接数据库之前根本没有加载JDBC驱动程序,或者连接URL是错误的。 由于连接URL看起来很好,我敢打赌,驱动程序根本就没有加载。 连接数据库之前,您需要在应用程序启动期间加载驱动程序。 对于Apache Derby,驱动程序类名是org.apache.derby.jdbc.ClientDriver
。 所以:
Class.forName("org.apache.derby.jdbc.ClientDriver");
我在Netbeans上编写Java应用程序时遇到了同样的问题。这里是解决scheme:
-
在项目select选项卡中find您的项目
-
右键单击“库”
-
点击“添加JAR /文件夹…”
-
select“derbyclient.jar”
-
点击“打开”,你会在你的“库”下看到“derbyclient.jar”
-
确保你的URL,用户名,密码是正确的,然后运行你的代码:)
如果使用embedded式Derby,则需要在类path中使用Derby.jar。
这个问题是回答,但提供了一个命令行的插图。 当我尝试一个尽可能简单的testing连接到networking模式德比时,这对我工作。
-
驱动程序加载在应用程序中:Class.forName(“org.apache.derby.jdbc.ClientDriver”)。newInstance();
-
连接URL是:“jdbc:derby:// localhost:1527 / myDB; create = true”
-
我运行我的应用程序使用:java -classpath derbyclient.jar :. myAppClass
我通过将库添加到我的项目下面的库控制台来解决这个问题:
- 右键单击,然后添加库
- 添加JAVA DB DRIVER。
我的项目正在工作!
我面临同样的问题。 在使用连接URL和用户凭证获取连接之前,我缺lessDriverManager.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);
也可以在persistence.xml中使用EmbeddedDriver,而jdbc URL指向Derby服务器。 在这种情况下,只需将url更改为指向数据库的path即可。
我尝试了这个线程中提到的一切,只有.registerDriver()为我工作。 这就是我现在代码的一部分:
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver()); connection = DriverManager.getConnection(url, user, pass);
请注意,问题不在embedded式Derby中。
如果Java DB服务器尚未启动,您也可以得到相同的错误。
您可能会错过启动Derby服务器。 一旦derby服务器启动,它就开始监听默认端口1527。
启动脚本的位置如下所示:
视窗:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat
Linux的:
<DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
连接string的语法无效时发生此错误。
您可以使用连接string
'jdbc:derby:MyDbTest;create=true'
要么
您可以在命令提示符中使用以下命令,下面的命令成功创build一个名为MyDbTest
的新数据库:
connect 'jdbc:derby:MyDbTest;create=true';
我刚碰到这个问题,试了以上的build议,但还是失败了。 没有重复上面提到的,下面是我(你)可能会丢失的东西:如果你正在使用maven,你可能会声明依赖:
<groupId>org.apache.derby</groupId> <artifactId>derbyclient</artifactId> <version>10.10.1.1</version>
请注意版本。 它必须与您正在运行的服务器实例兼容。
我解决了我的情况,放弃了提供的maven依赖关系,并手动添加来自“%JAVA_HOME%\ db \ lib”的外部jar,这是我运行的服务器的源。 在这种情况下,我正在testing使用我的本地。
因此,如果您正在使用远程服务器实例进行testing,请查找服务器软件包附带的derbyclient.jar。
如果数据库被创build,并且你已经开始连接,那么你需要的是添加驱动程序jar。 从项目窗口右键单击库文件夹,转到:c:\ program files \ sun \ javadb \ lib \ derbyclient.jar。 加载文件,你应该能够运行。
祝一切顺利