2015-04-01 3 views
2

J'utilise la dernière version de Spring framework 4.1.5 et Hibernate-Entity-Manager 4.3.8 avec Javax. Persistance-api 1.0.2 tous avec JPA 2.1. Cette spécification repose sur Java EE 7. J'ai remarqué que dans Resin 4.0.42, il utilise "javaee-16.jar". Le problème est que je reçois l'exception suivante:Comment classer Java EE 7 dans Resin 4.0.42 et ne pas utiliser la classe par défaut Javaee-16.jar chargée par défaut

Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes() 
[Ljavax/persistence/Index; 
    at 
    org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:973) 
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:824) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3845) 


Method javax.persistence.Table.indexes() only exists in Java EE 7  
(Javax.Persistence-api 1.0.2) as a JPA 2.1 spec and NOT in Java EE 6 as a 
JPA 2.0 spec. 

Problème est mon code est basé sur JPA 2.1. Y at-il de toute façon que je peux classer

<dependency> 
<groupId>javax</groupId> 
<artifactId>javaee-api</artifactId> 
<version>7.0</version> 
</dependency> 

même après que Resin a classloaded: javaee-16.jar en premier?

Répondre

1

J'ai du travail là où je charge les librairies enfant en premier, pas l'inverse. La résine chargeait Parent-first. J'ai remarqué que d'autres avaient le même défi avec l'implémentation de JPA 2.1 sur un serveur d'application qui implémente uniquement JPA 2.0. La clé est que chaque serveur d'application a sa propre façon de configurer les bibliothèques enfant (ou les bibliothèques de votre application) en premier.

Dans mon cas, en Resin.xml, ajouter ce qui suit:

<class-loader> 
    <servlet-hack/> 
</class-loader> 
+0

Salut, j'ai essayé, mais l'ambre de résine (la mise en œuvre de JPA 1.0 de résine) 'se plaint est une balise de premier niveau inattendue" dans persistence.xml. C'est l'espace de noms de JPA 2.1. Comment vous en êtes-vous débarrassé? (résine 4.0.43) – smallufo

+0

Utilisez des annotations pour JPA, cela devrait fonctionner. Ça marche pour moi. – logixplayer