2010-11-19 40 views
2

J'essaye d'effectuer la construction d'un projet Spring Roo (Spring MVC + aspectj + hibernate) sur mon serveur d'intégration hudson.javax.persistence dans java-6-openjdk

Le projet est configuré tu utiliser

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

La construction avec mon maven locale fonctionne très bien, mais l'environnement sur le serveur semble injecter une autre version de javax.persistence qui conduit à ces erreurs:

[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>) 

La construction est couru avec Maven et sa configuration est:

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" 

edit: Je n'utilisais pas la même version de roo localement et sur le serveur :)

Répondre

3

Utilisez-vous JPA2 dans votre projet?

JPA2 fait partie de Java EE 6, et de ce que je vois, vous utilisez la méthode this:

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

Cette méthode n'existe pas dans JPA1 (Java EE 5), comme vous pouvez le voir en examinant EntityManager où seulement

Query createQuery(String qlString) 

existe.

Tout cela signifie que Hudson utilise javax.persistence pour JPA1. Je n'ai pas utilisé Hudson, vous devrez donc savoir si vous pouvez le faire utiliser javax.persistence pour JPA2.

+0

Bonne analyse (+1). Mais je ne pense pas que le problème réside dans Hudson. Je pense que la dépendance maven est fausse –

+1

J'ai trouvé mon problème! Roo effectivement générer du code pour vous. Sur ma machine locale, j'ai utilisé Roo 1.0.1 qui génère du code JPA1 et ajoute une dépendance de persistance v1. Mais sur le serveur, j'ai installé roo 1.1 qui générait du code JPA2, et j'ai essayé de compiler en fonction de mon pom.xml. – Nicolas

0

Ce qui est étrange, c'est que cela fonctionne localement.

Vous avez une dépendance à JPA 1, mais utilisez les méthodes de JPA 2 (createQuery(query, class)).

Vérifiez votre chemin de classe local.