我已经看过以下主题,但是他们没有针对我的问题发布解决方案:
你好。
在我的项目中,我正在使用 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的BuildPath中的Maven Dependencies下以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)没有任何问题。
Scriptum之后:我试图解决这个难题:
。
<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.jar
2. derbyclient.jar
3. derbynet.jar
4. derbytools.jar
5. derby.jar
单击“应用”。有效!
对于Eclipse,请尝试this。
关于java - 使用Maven时,Derby给出了ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39269935/