Ich erstelle ein CLI-Tool, um eine vorhandene Anwendung zu verwalten. Sowohl die Anwendung und die Tests bauen fein und gut laufen aber trotzdem erhalte ich einen Javassist Fehler, wenn mein cli Werkzeug ausgeführt wird, der in dem Glas vorhanden ist:Javassist Fehler im Ruhezustand: ungültige Konstante Typ: 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
Da weiß ich, das Glas ist in Ordnung, wie die Einheit und Integrationstests laufe dagegen, ich dachte es könnte ein Problem mit Javassist sein, also habe ich cglib ausprobiert. Der Bytecode-Provider zeigt dann als cglib, aber ich bekomme immer noch die exakt gleiche Stack-Trace mit javassist drin.
cglib ist auf jeden Fall in der Classpath:
$ unzip -l flexipol-jar-with-dependencies.jar | grep cglib | wc -l
383
Ich habe mit versucht, sowohl dem Ruhezustand 3.4 und 3.5 und die exakt gleichen Fehler. Ist das ein Problem mit Javassist?
AKTUALISIEREN: Ich kann die Anwendung innerhalb von Eclipse erfolgreich ausführen (Rechtsklick-> Ausführen als-> Java-Anwendung), aber die Maven-generierte jar-with-dependencies schlägt fehl. Ich nehme an, der Unterschied besteht darin, dass javassist bei Eclipse das enthaltene jar nicht prüft, sondern alle Klassendateien (und vielleicht einige davon abhängige 3rd-party jars) überprüft.
vergessen Sie nicht 'shopt -s globstar' vor dem Scancode hinzufügen an der Spitze des Beitrags. –