gpt4 book ai didi

java - ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver 尝试将 JPA 与 Derby 一起使用时

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:55 24 4
gpt4 key购买 nike

我问的相关查询:How to configure & package a simple Java app to use JPA

我有一个简单的 Derby 数据库,我可以通过托管在 WebLogic 中的 EJB 连接到它。现在我想使用 JPA 从命令行 Java 应用程序连接到它。

到目前为止,这个 Java 代码 + persistence.xml 文件抛出以下错误。我做错了什么?

我的目录布局:

C:.
│ Registrar.class
│ Registrar.java
│ TxnClient.class
│ TxnClient.java

└───META-INF
persistence.xml

独立客户端:

import javax.persistence.*;

public class TxnClient {
public static void main(String[] args) throws Exception {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SRS-EM");
EntityManager manager = factory.createEntityManager( );
try {

} finally {
manager.close( );
factory.close( );
}
}
}

持久性.xml

<?xml version="1.0" encoding="windows-1252" ?>
<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_1_0.xsd" xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="SRS-EM" transaction-type="JTA">
<class>Registrar</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="openjpa.ConnectionURL"
value="jdbc:derby:C:\derby-db-files\MyDB" />
</properties>
</persistence-unit>
</persistence>

C:\temp\jpa>java TxnClient

 80  SRS-EM  INFO   [main] openjpa.Runtime - Starting BEA Kodo 4.2.0load03
221 SRS-EM INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.DerbyDictionary".
Exception in thread "main" <openjpa-1.1.0-r422266:657916 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: There were errors initializing your configuration: <openjpa-1.1.0-r422266:657916 fatal store error> org.apache.openjpa.util.StoreException: org.apache.derby.jdbc.EmbeddedDriver
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:123)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:776)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:683)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:288)
at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1409)
at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:646)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:183)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
at TxnClient.main(TxnClient.java:7)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:85)
... 15 more

最佳答案

要使用未随 WebLogic Server 安装的第三方 JDBC 驱动程序,您需要更新 WebLogic Server 的 CLASSPATH 以包含 JDBC 驱动程序类的位置。编辑 WL_HOME/common/bin 中的 commEnv.cmd/sh 脚本并添加您的类。

这适用于 Derby 的 JDBC 驱动程序(参见 third party driver)。如果您不知道将 JAR 放在哪里,请将它放在 WL_HOME\server\lib 以及与 Weblogic 捆绑在一起的其他 JDBC 驱动程序中。

PS:我想知道您为什么不使用 Kodo,它是 WebLogic 的默认持久化引擎,但这是另一回事了。

关于java - ClassNotFoundException : org. apache.derby.jdbc.EmbeddedDriver 尝试将 JPA 与 Derby 一起使用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894594/

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