Tôi đang tạo công cụ cli để quản lý ứng dụng hiện có. Cả hai ứng dụng và các bài kiểm tra xây dựng tốt và chạy tốt nhưng mặc dù trước đó tôi nhận được một thất bại Javassist khi chạy công cụ cli của tôi hiện có trong jar:Lỗi Javassist trong chế độ ngủ đông: loại hằng số không hợp lệ: 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
Kể từ khi tôi biết jar là tốt như các đơn vị và kiểm tra tích hợp chạy chống lại nó, tôi nghĩ rằng nó có thể là một vấn đề với javassist, vì vậy tôi đã cố gắng cglib. Các nhà cung cấp bytecode sau đó cho thấy như cglib nhưng tôi vẫn nhận được cùng một dấu vết stack với javassist hiện diện trong đó.
cglib chắc chắn là trong classpath:
$ unzip -l flexipol-jar-with-dependencies.jar | grep cglib | wc -l
383
Tôi đã thử với cả hai ngủ đông 3.4 và 3.5 và nhận được lỗi chính xác tương tự. Đây có phải là vấn đề với javassist không?
CẬP NHẬT: Tôi có thể chạy các ứng dụng thành công trong Eclipse (phải cấp nhấp chuột> Run như-> Java Application), nhưng sử dụng maven tạo jar-với-phụ thuộc bị lỗi. Tôi cho rằng sự khác biệt là với javassist Eclipse không kiểm tra jar chứa, thay vào đó, nó kiểm tra tất cả các tệp lớp (và có lẽ một vài lọ bên thứ ba phụ thuộc).
Đừng quên để thêm 'shopt -s globstar' trước khi mã quét ở đầu bài đăng. –