我正在使用Eclipse EE Kepler而我正在尝试在我的程序中运行derby。我添加到了构建路径derby.jar
和derbyclient.jar
,但仍然出现以下错误:
java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
。
有人可以帮我解决这个问题吗?
答案 0 :(得分:7)
我遇到了同样的问题' java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver'。在我的例子中,scope属性设置为test
<!-- https://mvnrepository.com/artifact/org.apache.derby/derby -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.13.1.1</version>
<scope>test</scope>
</dependency>
您需要从依赖项中删除scope元素并更新依赖项,如下所示。
<!-- https://mvnrepository.com/artifact/org.apache.derby/derby -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.13.1.1</version>
</dependency>
您可以参考this post,以获得完整的工作示例。
答案 1 :(得分:3)
您不应将这些jar添加到JRE目录,也不应添加到服务器的lib目录中。真正的解决方案是将罐子捆绑到war文件中。您应该考虑使用Ant或Maven等构建工具。以下是如何使用Maven完成此任务:
以下是一个示例pom.xml(这可能不是一个功能示例):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.10.2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
答案 2 :(得分:2)
通过在eclipse项目的构建路径中添加jar,您可以在编译时使用 derby driver 。但重要的是,当容器运行时,您也应该使它可用。所以将你的jar文件复制到服务器lib目录中。
答案 3 :(得分:2)
我有同样的问题(Windows 7,JDK 7,Eclipse Kepler),只是将C:\Program Files\Java\jdk1.7.0_25\db\lib
添加到项目属性 - &gt;运行/调试设置 - &gt; Classpath - &gt;用户条目 - &gt;添加外部JAR,它的工作原理。