gpt4 book ai didi

java - OpenJPA 增强 Spring ROO 批处理应用程序

转载 作者:行者123 更新时间:2023-12-01 15:57:45 24 4
gpt4 key购买 nike

我对 OpenJPA 很陌生,想要运行我的应用程序。我已经创建了一个 main 方法,并在其中加载上下文 XML,并启动一个事务来运行我的服务。但是当我运行它时,我得到了一个

org.apache.openjpa.persistence.ArgumentException:类型“class tld.myproject.domain.Entity”尚未增强。

我在 Google 上搜索了一下,发现我需要添加一个增强器,因此我将以下内容添加到我的命令行中:

-javaagent:/home/me/.m2/repository/org/apache/openjpa/openjpa/2.0.1/openjpa-2.0.1.jar

现在,我明白了

java.lang.LinkageError:加载程序(sun/misc/Launcher$AppClassLoader 的实例):尝试重复名称的类定义:“org/springframework/stereotype/Controller”

也许现在已经晚了,我的头脑还没有完全清醒,但是,这里到底发生了什么?我需要做什么才能让我的 Spring Roo 批处理项目运行?

干杯

尼克

PS,我可能应该在我的 pom.xml 中添加 Roo 为编译阶段定义了一个增强器

最佳答案

您可能应该使用编译时增强而不是 javaagent 的运行时增强。

如果您正在使用 m2eclipse(您可能会这样做),那么使用类似以下内容就足够了:

<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.H2Dictionary"/>
<!-- value="buildSchema" to runtime forward map the DDL SQL; value="validate" makes no changes to the database -->
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
</properties>
</persistence-unit>

在 pom.xml 的构建部分中,您应该有类似的内容:

                      <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<includes>**/*.class</includes>
<excludes>**/*_Roo_*.class</excludes>
<addDefaultConstructor>true</addDefaultConstructor>
</configuration>
<executions>
<execution>
<id>enhancer</id>
<phase>compile</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
<execution>
<id>test-enhancer</id>
<phase>test-compile</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>${openjpa.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</plugin>

请注意,roo 可能会生成可能不起作用的不同 xml 片段(IIRC 它使用不同的输出目录)。

清理后,您的项目类应该得到增强。

关于java - OpenJPA 增强 Spring ROO 批处理应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com