TomEE 10.1.4中使用scope="request"触发LinkageError问题求助
问题:TomEE 10.1.4中使用<c:set scope="request">触发重复代理类定义错误
以下XHTML代码在TomEE 8中可正常运行,但在TomEE 10.1.4中抛出运行时错误:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="jakarta.faces.core" xmlns:c="jakarta.tags.core" > <f:view> <body> <c:set var="demo" value="demo" scope="request"/> #{param['someparam']} #{demo} </body> </f:view> </html>
错误栈核心内容如下:
30-Apr-2026 09:38:16.163 SEVERE [http-nio-8080-exec-6] org.apache.myfaces.context.ExceptionHandlerUtils.logException java.lang.RuntimeException occurred while processing RENDER_RESPONSE [Location=] java.lang.RuntimeException: java.lang.reflect.InvocationTargetException ... Caused by: java.lang.reflect.InvocationTargetException ... Caused by: java.lang.LinkageError: loader org.apache.tomee.catalina.TomEEWebappClassLoader @1c582ac4 attempted duplicate class definition for org.apache.webbeans.custom.Map$$OwbNormalScopeProxy14900025290. (org.apache.webbeans.custom.Map$$OwbNormalScopeProxy14900025290 is in unnamed module of loader org.apache.tomee.catalina.TomEEWebappClassLoader @1c582ac4, parent loader java.net.URLClassLoader @1176dcec) at java.base/java.lang.ClassLoader.defineClass1(Native Method) ...
问题分析
该错误属于TomEE与CDI集成层面的问题,具体是TomEE内置的CDI实现OpenWebBeans在处理请求作用域对象(此处为JSTL <c:set> 设置的request域变量)时,重复生成了代理类,导致类加载时出现重复定义冲突。TomEE 10基于Jakarta EE 9+规范,相比TomEE 8的Java EE 8,CDI、JSF、JSTL的交互逻辑有较大调整,在处理JSTL设置的请求域变量被EL表达式引用的场景下,OpenWebBeans的代理生成机制出现了bug。
问题提交位置
你可以将该问题提交到:
- Apache TomEE官方GitHub仓库的Issues板块
- Apache TomEE官方JIRA追踪系统(项目代号为TOMEE)
内容的提问来源于stack exchange,提问作者cocorossello
相关产品推荐
相关产品推荐

