将 Java 版本从 8 更新到 17 后,我开始在日志中看到此错误。 我的 gradle 依赖:
implementation(group: 'org.hibernate', name: 'hibernate-core', version: '3.6.10.Final')
implementation(group: 'org.hibernate', name: 'hibernate-c3p0', version: '3.6.10.Final')
runtimeOnly(group: 'org.javassist', name: 'javassist', version: '3.17.1-GA')
下面是错误日志
INFO main db.HibernateUtils [] Building hibernate session factory...
ERROR main pojo.BasicLazyInitializer [] Javassist Enhancement failed: com.class.someclass
ERROR main pojo.BasicLazyInitializer [] java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @3e07d849
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
ERROR main pojo.BasicLazyInitializer [] at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:162)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:65)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:185)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:167)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:77)
ERROR main pojo.BasicLazyInitializer [] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
ERROR main pojo.BasicLazyInitializer [] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
ERROR main pojo.BasicLazyInitializer [] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
ERROR main pojo.BasicLazyInitializer [] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:133)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:80)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:322)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:485)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:133)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
ERROR main pojo.BasicLazyInitializer [] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
ERROR main pojo.BasicLazyInitializer [] db.HibernateUtils.createSessionFactory(HibernateUtils.java:37)
ERROR main pojo.BasicLazyInitializer [] db.HibernateUtils.createSessionFactory(HibernateUtils.java:30)
ERROR main pojo.BasicLazyInitializer [] Loader.start(Loader.java:124)
ERROR main pojo.BasicLazyInitializer [] Bootstrap.main(Bootstrap.java:37)
WARN main entity.PojoEntityTuplizer [] could not create proxy factory for:com.class.someclass
WARN main entity.PojoEntityTuplizer [] org.hibernate.HibernateException: Javassist Enhancement failed: com.class.someclass
WARN main entity.PojoEntityTuplizer [] at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:169)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:65)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:185)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:167)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:77)
WARN main entity.PojoEntityTuplizer [] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
WARN main entity.PojoEntityTuplizer [] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
WARN main entity.PojoEntityTuplizer [] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:133)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:80)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:322)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:485)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:133)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
WARN main entity.PojoEntityTuplizer [] db.HibernateUtils.createSessionFactory(HibernateUtils.java:37)
WARN main entity.PojoEntityTuplizer [] db.HibernateUtils.createSessionFactory(HibernateUtils.java:30)
WARN main entity.PojoEntityTuplizer [] Loader.start(Loader.java:124)
WARN main entity.PojoEntityTuplizer [] Bootstrap.main(Bootstrap.java:37)
WARN main entity.PojoEntityTuplizer [] Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @3e07d849
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
WARN main entity.PojoEntityTuplizer [] at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
WARN main entity.PojoEntityTuplizer [] at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)
WARN main entity.PojoEntityTuplizer [] at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:162)
WARN main entity.PojoEntityTuplizer [] ... 22 more
我尝试在我的 gradle 文件中添加 jvmargs
test {
jvmArgs=[
'--add-opens=java.base/java.lang.module=ALL-UNNAMED'
]
}
但仍然收到相同的错误日志。 我有更新 hibernate 或 javassist 依赖项吗?那么我想代码更改也将是必需的。 有人可以建议这里需要做什么吗?