Je crée un outil CLI pour gérer une application existante. L'application et les essais construisent bien et fonctionnent très bien, mais en dépit de ce que je reçois un échec de javassist lors de l'exécution de mon outil de cli qui existe dans le pot:Échec du Javassist en hibernation: type de constante invalide: 60
INFO: Bytecode provider name : javassist
...
INFO: Hibernate EntityManager 3.5.1-Final
Exception in thread "main" javax.persistence.PersistenceException: Unable to configure EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:371)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
...
at com.sophware.flexipol.admin.AdminTool.<init>(AdminTool.java:40)
at com.sophware.flexipol.admin.AdminTool.main(AdminTool.java:69)
Caused by: java.lang.RuntimeException: Error while reading file:flexipol-jar-with-dependencies.jar
at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:131)
at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:467)
at org.hibernate.ejb.Ejb3Configuration.addMetadataFromScan(Ejb3Configuration.java:457)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:347)
... 11 more
Caused by: java.io.IOException: invalid constant type: 60
at javassist.bytecode.ConstPool.readOne(ConstPool.java:1027)
at javassist.bytecode.ConstPool.read(ConstPool.java:970)
at javassist.bytecode.ConstPool.<init>(ConstPool.java:127)
at javassist.bytecode.ClassFile.read(ClassFile.java:693)
at javassist.bytecode.ClassFile.<init>(ClassFile.java:85)
at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:243)
at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:209)
at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:170)
at org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements(FileZippedJarVisitor.java:119)
at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:146)
at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:128)
... 14 more
Depuis que je sais que le pot est bien que l'unité et les tests d'intégration Je me suis dit que ça pourrait être un problème avec javassist, alors j'ai essayé cglib. Le fournisseur de bytecode montre alors comme cglib mais j'obtiens toujours exactement la même trace de pile avec le javassist présent dedans.
cglib est sans aucun doute dans le classpath:
$ unzip -l flexipol-jar-with-dependencies.jar | grep cglib | wc -l
383
J'ai essayé à la fois mise en veille prolongée 3.4 et 3.5 et obtenir exactement la même erreur. Est-ce un problème avec javassist?
MISE À JOUR: Je peux exécuter l'application avec succès dans Eclipse (droit droit-> Exécuter As-> Java Application), mais en utilisant les dépendances de pot avec généré maven-échoue. Je suppose que la différence est que, avec Eclipse, javassist n'inspecte pas le fichier contenant, il inspecte plutôt tous les fichiers de classe (et peut-être quelques fichiers JAR dépendants).
ne pas oublier d'ajouter 'shopt -s globstar' avant le code de balayage en haut du message. –