I have set up a project in Netbeans, created a script, made a new database with javadb. I can connect to it by gui - display the tables contents etc, but when i run an application with:
EntityManager em = Persistence.createEntityManagerFactory("lab5PU").createEntityManager();
i get this quite long exception:
[EL Info]: 2013-04-05 21:40:45.554--ServerSession(1198260109)--EclipseLink, version: Eclipse Persistence Services - 2.3.0.v20110604-r9504
[EL Severe]: 2013-04-05 21:40:45.574--ServerSession(1198260109)--Local Exception Stack:
Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error. Class [org.apache.derby.jdbc.ClientDriver] not found.
Exception Description: Configuration error. Class [org.apache.derby.jdbc.ClientDriver] not found.
at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82)
I can see the javadb drivers in the driver section in services, so i have no idea what the error might be.
EDIT: persistance.xml as requested:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="lab5PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>lab5.Colleagues</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/lab5"/>
<property name="javax.persistence.jdbc.password" value="mypass"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user" value="admin"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
I think the problem you have is that you don't have the Derby driver in the classpath of the project.
You can easily achieve that adding the JavaDB library to your project:
- Right-click on the project
- Properties -> Libraries
- Add Library -> JavaDB driver
This includes derby.jar
, derbyclient.jar
and derbynet.jar
in your project's classpath.
The derbyclient.jar
contains the class org.apache.derby.jdbc.ClientDriver
your code is complaining about.
来源:https://stackoverflow.com/questions/15842229/class-org-apache-derby-jdbc-clientdriver-not-found-when-trying-to-connect-to