当前位置: 首页 > 面试题库 >

使用带有Datanucleus Maven插件的单独模块中的JDO Persistent类

顾昌翰
2023-03-14
问题内容

我有一个可以使用JDO持久保存到数据库的应用程序-
我想使用第二个Java模块中的PersistenceCapable类。尽管应用程序会编译一个简单的测试,但会出现以下错误:


com.hello.world.Foo”类不可持久。这意味着该类尚未增强,或者文件的增强版本不在CLASSPATH中(或被未增强的版本隐藏),或者Meta-
找不到该类的数据/注释。

好的,因此增强器插件未在第二个模块的类上运行。我不确定在构建过程中我需要做什么以将增强器指向该模块。

  • 父项目
  • 第二个模块:com.hello.world.Foo

ParentProject pom.xml及其相关部分-问题是如何将增强器指向包含我的持久性类的第二个模块?

    <dependencies>


        <dependency>
            <groupId>Second Module</groupId>
            <artifactId>Second Module</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>[3.2.0, 3.2.99)</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jdo</artifactId>
            <version>[3.2.0, 3.2.99)</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-rdbms</artifactId>
            <version>[3.2.0, 3.2.99)</version>
            <scope>runtime</scope>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>datanucleus-maven-plugin</artifactId>
                <version>3.3.0-release</version>
                <configuration>
                    <api>JDO</api>
                    <props>${basedir}/datanucleus.properties</props>
                    <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
                    <verbose>true</verbose>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

问题答案:

知道了-我不得不在问题中添加完全相同的pom.xml配置到第二个模块,并mvn install在编译父模块之前执行使这些类增强的操作。同时从事Jetty和GAE。我错误地认为父模块会增强模块依赖项中包含的类。

感谢您的帮助DataNucleus!



 类似资料:
  • 我有以下代码: 我编译此文件时出错: 但是,删除内部模块并编译它本身包含的代码运行良好: 我错过了什么?如果模块位于单独的文件中,我会收到相同的错误: main.rs a.rs

  • 强制没有同名节点可以与同级共存。这个插件没有选项,只是防止重命名节点并将节点移动到已包含相同名称节点的父节点。 $(function () { $("#plugins8").jstree({ "core" : { "check_callback" : true }, "plugins" : [ "unique", "dnd" ] }); }

  • 多模块项目具有具有以下依赖关系的模块:web- 我在web模块中添加了sping-boo-gradle-plugin: 当SpringBootGradle插件下载旧的hibernate版本时,我在持久性模块中有重复的版本。 形象 我尝试覆盖web模块中的hibernate依赖项,它正在工作: 形象 为什么插件下载旧的Hibernate版本?是否有任何可能排除旧的Hibernate版本从sping-

  • 问题内容: 我想将Mongoose模型分离到一个单独的文件中。我试图这样做: 然后,我尝试使用如下模型: 在单独的模块中引用模型是否合理? 问题答案: 基本方法看起来很合理。 作为一种选择,您可以考虑集成模型和控制器功能的“提供商”模块。这样,您可以让app.js实例化提供程序,然后可以执行所有控制器功能。app.js只需指定要实现的具有相应控制器功能的路由即可。 为了进一步整理,您还可以考虑使用

  • 问题内容: 我有2个FileHandlers可以写出两个单独的文件,并且发生的I / O数量使我的应用程序速度大大降低: 我决定让FileHandlers在单独的线程上运行。 由于它们位于单独的线程上,因此我需要一个“队列”概念,以便这些单独的线程可以轮询此队列并打印出所有传入消息。 我已经对消息进行了预格式化,以便所使用的任何参数在它们实际到达FileHandler中的打印输出之前都不会更改。

  • 如何创建一个新的GWT和GAE项目,其中包含使用Java中的google eclipse插件的模块?我尝试使用eclipse创建一个新的web应用程序,但它只是创建了一个没有模块的GWT和GAE项目。 谢谢