0

環境: Eclipse、Maven

ステップ4で立ち往生しているため、 Datanucleus JDOチュートリアルに従っていますが、役に立ちません。「情報」がありますが、MavenとDatanucleusが初めてであるため、それを見つける明確な方法がありません。

私がやりたかったのは、機能しているプロジェクトを AppEngine とObjectifyから切り替えて、Linode をターゲットにするように移植することだけでした (Hibernate や Datanucleus などの永続化レイヤーを使用)。これは、チュートリアルで主張されている「Straight Forward™」とはかけ離れています。

コードの実行中に次のエラーが発生しますJDOHelper.getPersistenceManagerFactory("datanucleus.properties")

javax.jdo.JDOFatalUserException: A property named javax.jdo.PersistenceManagerFactoryClass must be specified, or a jar file with a META-INF/services/javax.jdo.PersistenceManagerFactory entry must be in the classpath, or a property named javax.jdo.option.PersistenceUnitName must be specified.
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:861)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1099)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:919)
at myproject.HelloWorld.handle(HelloWorld.java:45)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)

何が起こっているのかを理解するために必要なすべてのテクノロジーを読むのにさらに数日かかるように思われるので、これから先に進むのはいいことですが、実際には始めたいだけです。 1日か2日の「解決策」を選択する必要があります。これは、現時点ではHibernateになるようです。

exec:java 構成の追加のクラスパスとして ${basedir} を含めるなど、pom.xml にさまざまな変更を加え、Datanucleus Maven設定にコピーしました。

4

1 に答える 1

0

エラーメッセージが明示的であるように私には思えます

javax.jdo.PersistenceManagerFactoryClass という名前のプロパティを指定するか、META-INF/services/javax.jdo.PersistenceManagerFactory エントリを含む jar ファイルをクラスパスに指定するか、javax.jdo.option.PersistenceUnitName という名前のプロパティを指定する必要があります.

「datanucleus.properties」は CLASSPATH のルートにないのでしょうか? または、CLASSPATH に jdo-api.jar がないか、おそらく datanucleus-api-jdo.jar、または他の jar がありません。CLASSPATH を実際に印刷して「問題の説明」に表示し、その下のディレクトリ構造を表示するのは簡単な作業です。

ステップ 4 で何を入力しているのかは説明しません。提供されている README ファイルが何をすべきかを示し、動作することが確認されているからです。提供された Maven pom.xmlは、提供されたサンプルでそのまま使用できます。あなたが言うように、あなたは自分のアプリケーションに「適応(TM)」していて、何を変更したのか、なぜ変更したのか、コードがどこにあるのかなどを提示していません。

于 2013-01-15T08:21:51.113 に答える