0

环境:Eclipse、Maven

我一直在关注Datanucleus JDO 教程但无济于事,因为我被困在第 4 步。它有“信息”,但由于我是 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)

从中取得进展会很好,因为似乎可能需要再花几天时间阅读所有必需的技术才能弄清楚发生了什么,但我实际上只是想开始,所以如果是一两天的“弄清楚”我只需要选择一个“解决方案”,目前看起来它会是休眠状态。

我对 pom.xml 进行了各种修改,例如包括 ${basedir} 作为 exec:java 配置的额外类路径,并复制到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 回答