gpt4 book ai didi

java - 使用 Maven 时,Derby 给出 ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver

转载 作者:行者123 更新时间:2023-12-01 23:58:04 26 4
gpt4 key购买 nike

我看过以下主题,但他们没有发布我的问题的解决方案:

  1. java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
  2. JDBC Derby driver not found
  3. SQLException: No suitable driver found for jdbc:derby://localhost:1527
  4. Class [org.apache.derby.jdbc.ClientDriver] not found Exception
  5. Class [org.apache.derby.jdbc.ClientDriver] not found. When trying to connect to db
  6. ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver when trying to use JPA with Derby

你好。
在我的项目中,我使用Maven,并且我还想在嵌入式模式下使用Derby Database。因此,我通过以下内容更新了 pom.xml 文件:

<dependencies>
...
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.12.1.1</version>
</dependency>
</dependencies>

Maven 已成功下载依赖项。它在 Eclipse 的 BuildPathMaven 依赖项 中可见,为 derby-10.12.1.1.jar
然后我创建了测试类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.derby.jdbc.EmbeddedDriver;

public class DerbyTest {
public static void main (String...strings){
try {
DriverManager.registerDriver(new EmbeddedDriver());
Connection conn = DriverManager.getConnection("jdbc:derby:test2;create=true");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

这给了我以下 ClassNotFoundException

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/derby/jdbc/EmbeddedDriver
at DerbyTest.main(DerbyTest.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

问题是 - 为什么?该类位于构建路径中。 Eclipse 没有给我任何编译时错误警告 - 它在编写过程中看到了该类。依赖的范围是编译的。 JVM 在查找类时不应该出现问题。此外,JVM 与我使用的其他依赖项(jTest、Hibernate、SQLite)没有问题。

Post Scriptum:我试图解决这个难题:

  1. 我使用与上面相同的测试类创建了新项目。然后我从https://db.apache.org/derby/releases/release-10.12.1.1.cgi手动下载了Derby (bin 版本)并手动将 derby.jar 添加到新项目的构建路径中。运行程序后数据库已成功创建

  2. 然后我创建了另一个新项目 2,其测试类与之前相同。我在本地存储库中找到了 Maven 版本的 Debry(位于 C:\Users\User\.m2\repository\org\apache\derby\derby\10.12.1.1 中)并手动添加了 >derby-10.12.1.1.jar 到新项目的构建路径。运行程序后,我得到了与使用 Maven 完全相同的错误

  3. 我使用手动下载的 Derby(从第 1 点开始),并通过在我的主项目 pom.xml文件来创建外部存储库强>:

.

<repositories>
<repository>
<id>derby-repo</id>
<url>file://C:/libs</url>
</repository>
</repositories>

<dependencies>
...
<dependency>
<groupId>derbygroupid</groupId>
<artifactId>derby</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>

Maven 成功在 Eclipse 的 BuildPath 中的 Maven 依赖项 下添加了一个依赖项 derby-0.0.1.jar。运行程序后数据库已成功创建
这通常可以解决问题,但问题是,为什么 Maven 无法自行处理

编辑:对于那些感兴趣的人。我通过使用旧版本的 derby 暂时解决了问题:

<dependencies>
...
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.11.1.1</version>
</dependency>
</dependencies>

这个版本可以工作,但我仍然不知道为什么 10.12.1.1 不行

最佳答案

我也遇到过同样的问题,不过我已经解决了......

由于我在 intellij 工作,所以我去了

文件->项目结构->模块->依赖项

单击加号并选择 JAR 和依赖项

打开jdk的路径,并从其中添加以下jar文件1. Derby .jar2. Derby 客户端.jar3. Derby 网.jar4. Derby 工具.jar5. derby.jar

单击“应用”。成功了!

对于 Eclipse,请尝试 this .

关于java - 使用 Maven 时,Derby 给出 ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com