1

構成し、DatanucleusJPAを使用して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ファイルがあります。何が起こっているのか理解できません。

4

1 に答える 1

1

jarを変更したときに、MANIFEST.MFファイルとplugin.xmlファイルの面倒を見る必要はありません。DataNucleus jarは、(OSGiベースの)プラグインメカニズムがプラグインと機能を識別できるようにパッケージ化されています。あなたはそれらの瓶で遊んでそれを無効にしたので、結果を得てください。

解決策:提供されているjarを使用するか、正しくマージします(この場合、それはあなたの責任です)

于 2013-03-11T06:08:44.493 に答える