【发布时间】:2017-06-20 05:32:46
【问题描述】:
我的 Java 程序有问题。当我从 Eclipse(运行或调试)运行程序时,它工作正常。但是,当我尝试运行导出的 JAR 文件时,它给了我以下错误:
977 INFO [main] openjpa.Runtime - 启动 OpenJPA 2.4.2 持久性提供程序正在尝试使用 persistence.xml 文件中的属性来解析数据源。 Java 数据库连接 (JDBC) 驱动程序或数据源类名称必须在 openjpa.ConnectionDriverName 或 javax.persistence.jdbc.driver 属性中指定。配置中提供了以下属性:“org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@2655aabb”。
我检查了 persistence.xml 在 JAR 文件中的正确位置 (src/META-INF)。
这是我的 persistence.xml:
<persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>class_name_here</class>
<class>class_name_here</class>
<properties>
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
<!-- Production -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://server:port/database" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="password" />
</properties>
*我从属性中删除了值,但在原始文件中它们存在并且它们是正确的(它在 Eclipse 中运行)。
【问题讨论】:
-
感谢您的帮助。我正在使用选项“将所需的库打包到生成的 JAR 中”。我按照链接中的说明进行了尝试,现在它告诉我“在尝试以下发现的实现后,没有可用于“JPA”的持久性提供程序:org.eclipse.persistence.jpa.PersistenceProvider”
-
您已将 OpenJPA 声明为您的持久性提供程序 (
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>),但错误中提到了 EclipseLink (discovered implementation: org.eclipse.persistence.jpa.PersistenceProvider) 那么,它是什么?哪个 JPA 实现在类路径中可用? -
谢谢。这将是JPA。我在我的类路径中发现了一些额外的库并进行了一些清理,但错误是原来的。到目前为止,这些是我的类路径中仅有的 2 个库: mysql-connector-java-5.0.8-bin.jar openjpa-all-2.4.2.jar *还有一些是通过 maven 添加的,但那些是用于日志记录和Twitter,与持久性无关。
-
尝试将 OpenJPA 和 MySQL 连接器添加到 Maven 依赖项并从构建路径中删除独立依赖项