java - Datanucleus RDBMS JPA 带依赖项的 jar

标签 java jpa datanucleus

我配置并使用 Datanucleus JPA 连接到 MySQL。我使用 datanucleus-enhancer-plugin 编译类和增强实体。我可以使用 mvn exec:java 运行我的应用程序,也可以在使用 lib(jar 依赖项)创建存档后运行它。

当我创建 jar (jar-with-dependencies) 时出现问题。我收到此错误:

javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "mysql" after trying the following discovered implementations: org.datanucleus.api.jpa.PersistenceProviderImpl from provider: org.datanucleus.api.jpa.PersistenceProviderImpl
    at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
    at cantina.crawler.util.JpaUtil.getRdbmsEntityManager(JpaUtil.java:29)
    at cantina.crawler.bolt.SiteDetectorBolt.prepare(SiteDetectorBolt.java:32)
    at backtype.storm.daemon.executor$fn__4050$fn__4059.invoke(executor.clj:610)
    at backtype.storm.util$async_loop$fn__465.invoke(util.clj:375)
    at clojure.lang.AFn.run(AFn.java:24)
    at java.lang.Thread.run(Thread.java:722)
Caused by: org.datanucleus.exceptions.NucleusException: Error creating handler of type "persistence" for metadata parsing : MetaData handler plugin "persistence" was not found. Please check your CLASSPATH and plugin specification.
    at org.datanucleus.metadata.xml.MetaDataParser.parseMetaDataStream(MetaDataParser.java:269)
    at org.datanucleus.metadata.xml.MetaDataParser.parseMetaDataURL(MetaDataParser.java:137)
    at org.datanucleus.metadata.MetaDataUtils.parsePersistenceFiles(MetaDataUtils.java:956)
    at org.datanucleus.api.jpa.JPAEntityManagerFactory.<init>(JPAEntityManagerFactory.java:342)
at org.datanucleus.api.jpa.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:91)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
... 6 more
Caused by: org.datanucleus.exceptions.NucleusUserException: MetaData handler plugin "persistence" was not found. Please check your CLASSPATH and plugin specification.
    at org.datanucleus.metadata.xml.MetaDataParser.parseMetaDataStream(MetaDataParser.java:263)
... 11 more

我解压了 jar,datanucleus-core 文件就在那里。我不知道发生了什么。

最佳答案

当您更改 jar 时,您没有费心去查看 MANIFEST.MF 和 plugin.xml 文件。 DataNucleus jar 的打包允许(基于 OSGi 的)插件机制识别插件和功能。你已经通过使用这些 jar 禁用了它,所以后果自负。

解决方案:要么使用提供的 jar,要么正确合并它们(在这种情况下,这是你的责任)

关于java - Datanucleus RDBMS JPA 带依赖项的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310489/

相关文章:

java - ManyToMany RelationShip 列不允许为 NULL

java - 在没有 Cascade Persist 的情况下使用 JPA

java - 通用 DAO 如何为所有不同的 DAO 实现返回相同的类型?

java - Files.isHidden C :\\changed between JDK12 and JDK13 on windows

java - JBoss 中的 "javax.servlet.ServletException: non-HTTP request or response"

java - 如何将我的二维 boolean 数组作为一个整体引用?

java - java处理大量文本文件

jpa - JPQL 查询 SELECT 可选 + 通用 DAO 选择

json - JDO、org.json.simple.JSONObject 和 PostgreSQL JSON 类型

java - 使用 JDO 从 GAE 数据存储读取时出现 ConcurrentModificationException