当前位置: 首页 > 知识库问答 >
问题:

JBoss eap 6/as 7类加载器:如何修复LinkageError

孟和玉
2023-03-14

我正试图在jboss eap 6上部署我的seam 2.2.2应用程序。

1) 我的应用程序需要lucene core。所以我必须把它包在耳朵里。

2)Hibernate-search模块依赖于Lucene-core模块来加载。

然后失败:

16:18:29,788 DEBUG [org.jboss.seam.persistence.HibernatePersistenceProvider] (ServerService Thread Pool -- 56) Hibernate Search is available :-)
16:18:29,843 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/MyApp]] (ServerService Thread Pool -- 56) JBWEB000287: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: org.jboss.seam.InstantiationException: Could not instantiate Seam component: securityManagerContextHolder
    at org.jboss.seam.Component.newInstance(Component.java:2170) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:143) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.init.Initialization.init(Initialization.java:744) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:36) [jboss-seam.jar:2.2.2.Final]
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
    at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:161) [jboss-as-web-7.4.1.Final-redhat-3.jar:7.4.1.Final-redhat-3]
    at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:59) [jboss-as-web-7.4.1.Final-redhat-3.jar:7.4.1.Final-redhat-3]
    at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:94) [jboss-as-web-7.4.1.Final-redhat-3.jar:7.4.1.Final-redhat-3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [rt.jar:1.7.0_71]
    at java.util.concurrent.FutureTask.run(Unknown Source) [rt.jar:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.lang.RuntimeException: exception invoking: getEntityManager
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.callComponentMethod(Component.java:2275) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.unwrap(Component.java:2301) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.getInstance(Component.java:2044) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.getInstance(Component.java:1986) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.getInstance(Component.java:1980) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.getInstance(Component.java:1975) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.framework.Controller.getComponentInstance(Controller.java:272) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.framework.PersistenceController.getPersistenceContext(PersistenceController.java:20) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.framework.EntityController.getEntityManager(EntityController.java:21) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.framework.EntityController.createQuery(EntityController.java:42) [jboss-seam.jar:2.2.2.Final]
    at com.myapp.youknow.security.UserGroupController.listUserGroups(UserGroupController.java:46)     [MyApp-ejb.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) [jboss-seam.jar:2.2.2.Final]
    at com.myapp.youknow.security.UserGroupController_$$_javassist_seam_4.listUserGroups(UserGroupController_$$_javassist_seam_4.java) [MyApp-ejb.jar:]
    at com.myapp.youknow.security.SecurityManagerContextHolder.loadSecurityManagerContext(SecurityManagerContextHolder.java:55) [MyApp-ejb.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) [jboss-seam.jar:2.2.2.Final]
    at com.myapp.youknow.security.SecurityManagerContextHolder_$$_javassist_seam_3.loadSecurityManagerContext(SecurityManagerContextHolder_$$_javassist_seam_3.java) [MyApp-ejb.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.callComponentMethod(Component.java:2275) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.callCreateMethod(Component.java:2198) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.Component.newInstance(Component.java:2158) [jboss-seam.jar:2.2.2.Final]
    ... 16 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) [jboss-seam.jar:2.2.2.Final]
... 69 more
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "org/apache/lucene/search/Query"
    at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_71]
    at java.lang.Class.forName(Unknown Source) [rt.jar:1.7.0_71]
    at com.sun.proxy.$Proxy143.<clinit>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Proxy.newInstance(Unknown Source) [rt.jar:1.7.0_71]
    at java.lang.reflect.Proxy.newProxyInstance(Unknown Source) [rt.jar:1.7.0_71]
    at org.jboss.seam.persistence.HibernatePersistenceProvider.proxyEntityManager(HibernatePersistenceProvider.java:331) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.persistence.ManagedPersistenceContext.initEntityManager(ManagedPersistenceContext.java:81) [jboss-seam.jar:2.2.2.Final]
    at org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManager(ManagedPersistenceContext.java:108) [jboss-seam.jar:2.2.2.Final]
    ... 75 more

这似乎是来自不同类加载器的问题,但由于我是jboss模块机制的新手,我不知道如何解决这个问题。有什么建议吗?

共有1个答案

宣弘新
2023-03-14

我通过将Lucene-core模块定义为全局来解决这个问题。我遵循以下解释:http://www.javacodegeeks.com/2012/09/jboss-as-7-classloading-explained.html

 类似资料:
  • 在应用程序部署期间,检测到JPA的使用(例如persistence.xml或@persistenceContext/unit注释),并将Hibernate依赖项注入到应用程序部署中。 https://docs.jboss.org/author/display/as71/jpa+referenceGuide#jpareferenceGuide-简介 我需要弄清楚如何禁用这个“自动检测”功能。 可以通

  • 当页面加载和管理页面时,有时会出现以下问题。错误不是永久性的,刷新页面后会消失。可能是什么问题,我如何解决它? 这是一条错误消息: 警告:fopen(/web/htdocs4/wallartdecorhu/home/www/system/storage/cache/cache.store.1604651378):无法打开流:在/web/htdocs4/wallartdecorhu/home/www

  • 我试图修改几个类的字节代码,这些类的打包jar文件不在类路径中-它们是在给定URL的运行时由自定义的加载的。我尝试使用和来拦截那些类,但失败了。类加载器是遗留项目的一部分,因此我无法直接对其进行更改。 代理可以很好地处理AppClassLoader“本地”加载的类,但只会忽略那些由自定义类加载器加载的类。 CustomClassLoader: 我的代理中使用的ClassFileTransforme

  • 问题内容: 我正在Python 3.8中设置自动点击程序,我需要Win32api来获取GetAsyncKeyState,但它总是给我这个错误: 我在Windows 10 Home 64x上。我已经尝试过了 它成功安装,但没有任何变化。我也尝试卸载并重新安装python。我还尝试以相同的方式安装“ django”,并且在我安装时实际上可以正常工作,因此我认为这仅是win32api问题。 我希望输出为

  • 框架中所有的类都是通过类加载器(ClassLoader)加载的,通过Loader我们可以实现类的统一管理。下面我们一起来看看Loader提供了哪些加载方法: 1. Loader::import 加载一个类或者加载一个包 方法原型 import( $classPath, $type = IMPORT_APP, $extension=EXT_PHP ) 参数名称 参数说明 $classPath 文件的

  • 加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 , 驱动器 ,辅助函数 , 模型 或其他你自己的文件。 注解 该类由系统自动加载,你无需手工加载。 应用程序"包" 包的视图文件 类参考 应用程序"包" 应用程序包(Package)可以很便捷的将你的应用部署在一个独立的目录中, 以实现自己整套的类库,模型,辅助函数,配置,文件和语言包。 建议将这些应用程序包放置在 appli