我是OpenJPA的新手,想要运行我的应用程序。我已经创建了一个main方法并在那里加载了上下文XML并启动了一个事务来运行我的服务。但是当我运行它时,我得到了一个
org.apache.openjpa.persistence.ArgumentException:类型“class tld.myproject.domain.Entity”尚未得到增强。
我谷歌了,发现我需要添加一个增强器,所以我在命令行中添加了以下内容:
-javaagent:/home/me/.m2/repository/org/apache/openjpa/openjpa/2.0.1/openjpa-2.0.1.jar
现在,我得到了
java.lang.LinkageError:loader(sun / misc / Launcher $ AppClassLoader的实例):尝试重复的名称类定义:“org / springframework / stereotype / Controller”
也许它刚刚来晚了我没有把头拧上,但是,到底发生了什么?我需要做些什么才能让我的Spring Roo批处理项目运行?
干杯
的Nik
PS,我应该在我的pom.xml中添加它,Roo为编译阶段定义了一个增强器
答案 0 :(得分:1)
您应该使用编译时增强功能,而不是使用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使用不同的输出目录)。
清理完项目后,应该增强课程。