【问题标题】:Javassist Enhancement failed for all configured Hibernate mappings所有配置的 Hibernate 映射的 Javassist 增强失败
【发布时间】:2021-05-19 05:33:57
【问题描述】:

我正在尝试从使用 Eclipse 开发 Java Web 应用程序迁移到 VS Code。

我曾经使用 Eclipses Tomcat plugin 在 Tomcat9.0.6 和 Hibernate 4.3.4 上本地运行/调试。这工作正常。 但是,当我尝试通过 Tomcat plugin for VS Code 运行应用程序时,我会为使用 {class}.hbm.xml 配置的每个实体获得此类堆栈跟踪。:

[apache-tomcat-9.0.6.vs]: 2021-02-16 11:35:22,ERROR,,org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer,main,4053,JavassistLazyInitializer.java,165,JavassistLazyInitializer,getProxyFactory HHH000142: Javassist Enhancement failed: {fully.qualified.ClassName}
java.lang.NullPointerException
    at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:103)
    at javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:151)
    at javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:134)
    at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
    at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:131)
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:530)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:515)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:451)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:422)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:162)
    at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:67)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:224)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:212)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:80)
    at jdk.internal.reflect.GeneratedConstructorAccessor52.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:403)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148)
    at jdk.internal.reflect.GeneratedConstructorAccessor51.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:401)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
    at com.onesparrow.commons.orm.hibernate.DbHibernate.init(DbHibernate.java:61)
    at com.onesparrow.commons.orm.DbRepository.addDb(DbRepository.java:59)
    at eu.sonetas.fuga.controller.InitController.initCustomerDbs(InitController.java:463)
    at eu.sonetas.fuga.controller.InitController.init(InitController.java:312)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:971)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4765)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5075)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:742)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1142)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1876)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1054)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1586)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:966)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)

我在 VS Code 中运行应用程序,方法是为我的 Web 应用程序创建一个战争,然后使用 VS Code 插件的“在 Tomcat 服务器上运行战争”上下文菜单选项。

我怀疑 Eclipse 插件传递了一些 VS Code 插件没有传递的参数,但我在这里完全不知所措。在这一点上,任何建议都将不胜感激。

【问题讨论】:

  • 是的,除了 Eclipse 没有集成终端或对远程工作的支持。有趣的笑话,虽然没有真正的帮助......如果它们实际上是一样的,那就行了
  • 除了Tomcat插件/扩展外,实际上是一样的。知道了这一点,应该清楚 VS Code Tomcat 扩展的文档应该告诉你在哪里或如何设置fully.qualified.ClassName。如果您自己无法弄清楚,请链接到您正在使用的 Tomcat 扩展 (this one?)。顺便说一下,Eclipse IDE for Enterprise Java Developers 附带TM Terminal,它提供了一个Terminal 视图和更多用于远程工作的视图。
  • 我正在使用你链接的那个,它没有非常有用的文档,所以如果你能帮我告诉 VS Code Tomcat 扩展在哪里/如何设置这些类名
  • 抱歉,我无法回答您的问题。我读了这个问题,因为它被标记为 eclipse,但这里不需要关于 Eclipse 的知识。似乎是一个休眠的东西。您是否尝试手动设置fully.qualified.ClassName-Dfully.qualified.ClassName=...

标签: java hibernate tomcat visual-studio-code


【解决方案1】:

所以经过一番挖掘,我发现发生这种情况的原因是 Tomcat 从 JRE 11 而不是 9 开始。

为了改变这一点,我发现了this 问题。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 2014-12-02
    • 2012-09-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多