0

我正在通过使用 DataNucleus 作为我的 JPA 提供程序编写应用程序来学习 JavaEE。我使用 Eclipse IDE 和 Apache Tomcat 服务器进行测试,因此我想设置运行时增强功能以​​避免在每次测试部署时对我的类进行字节编译。

根据文档,我将其添加到我的 persistence.xml 文件中:

<property name="datanucleus.jpa.addClassTransformer" value="true"/>

但是,无论如何,我的课程并没有得到提高。我得到的错误信息是:

org.datanucleus.exceptions.NucleusUserException: Found Meta-Data for
class pbf.model.Message but this class is either not enhanced or you
have multiple copies of jdo-api.jar in your CLASSPATH!! Make sure all
persistable classes are enhanced before running DataNucleus and/or the
CLASSPATH is correct.

文档对于 Java EE 是否也需要在命令行上指定 javaagent 有点模糊。如果是这样,我该如何在 Eclipse 中使用 Tomcat 服务器?启动服务器时,我看不到自定义命令行和/或 Java 参数的选项。

我使用从 maven 存储库下载的 datanucleus-accessplatform-jpa-rdbms v.3.3.0-release 以及所有依赖项。

4

1 回答 1

1

Tomcat 不是“真正的”JavaEE 服务器 AFAIK,只是一个 servlet 容器,在这种情况下不实现 JPA 规范的 JavaEE 服务器方面(即使用 DataNucleus 在您的问题中注册的 JPA ClassTransformer,或创建一个EMF 使用正确的构造函数等)。因此,您应该通过 JVM 命令行使用使用 Java 代理的标准 Java 方式,这对于支持使用代理转换器的任何 JPA 实现都是相同的

于 2013-08-05T12:35:35.360 回答