2010-11-19 40 views
2

我想在我的哈德森集成服務器上執行Spring Roo項目(= Spring MVC + aspectj + hibernate)的構建。在java-6-openjdk中的javax.persistence

的項目配置TU使用

<dependency> 
<groupId>javax.persistence</groupId> 
<artifactId>com.springsource.javax.persistence</artifactId> 
<version>1.0.0</version> 
</dependency> 

構建與本地行家工作正常,但在服務器上的環境似乎注入的javax.persistence一些其他的版本,這導致這些錯誤:

[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Long>) 
[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Folder>) 

構建是跑了Maven和它的配置是:

Apache Maven 2.2.1 (rdebian-4) 
Java version: 1.6.0_18 
Java home: /usr/lib/jvm/java-6-openjdk/jre 
Default locale: en_US, platform encoding: ANSI_X3.4-1968 
OS name: "linux" version: "2.6.32-5-amd64" arch: "amd64" Family: "unix" 

編輯:我沒有在本地和服務器上使用相同版本的roo :)

回答

3

您是否在項目中使用JPA2?

JPA2是Java EE 6的一部分,從我所看到的,你使用this方法:

<T> TypedQuery<T> createQuery(java.lang.String qlString, java.lang.Class<T> resultClass) 

此方法不會在JPA1(Java EE 5中)存在,你可以看到通過檢查EntityManager哪裏只有

Query createQuery(String qlString) 

存在。

所有這些意味着哈德森對JPA1使用javax.persistence。我沒有使用Hudson,因此您必須查明您是否可以使用JPA2的javax.persistence

+0

分析(+1)。但我不認爲問題在於哈德森。我認爲maven的依賴是錯的 – 2010-11-19 11:35:53

+1

我發現我的問題! Roo實際上爲您生成代碼。在我的本地機器上,我使用Roo 1.0.1生成JPA1代碼並添加了持久性v1依賴項。 但在服務器上,我安裝了生成JPA2代碼的roo 1.1,並嘗試基於我提交的pom.xml進行編譯。 – Nicolas 2010-11-19 11:57:16

0

奇怪的是,它在本地工作。

您對JPA 1有依賴性,但使用JPA 2(createQuery(query, class))的方法。

檢查您的本地類路徑。

相關問題