You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8迁移至Java11时javax/activation/DataSource异常排查求助

Java 8迁移至Java 11后javax/activation/DataSource类找不到问题排查思路

我们正在从Java 8迁移到Java 11,遇到SystemException: javax/activation/DataSource异常。已知Java 9及以上版本移除了javax.activation模块,已添加如下Maven依赖,但问题仍未解决:

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

附异常堆栈信息:

2022-11-04 15:30:56,505 [][][][][ERROR] - javax/activation/DataSource
2022-11-04 15:30:56,506 [][][][][ERROR] - [java.base/java.lang.ClassLoader.defineClass1(Native Method), 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017), 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174), 
java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555), 
java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458), 
java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452), 
java.base/java.security.AccessController.doPrivileged(Native Method), 
java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451), 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589), 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522), 
org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:538), 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522), 
com.edb.finance.appl.document.livecycleproxy.LiveCycleProxyClient.mapLiveCycleRequestToDocumentInputData(LiveCycleProxyClient.java:269), 
com.edb.finance.appl.document.livecycleproxy.LiveCycleProxyClient.createLiveCycleProxyServiceRequest(LiveCycleProxyClient.java:231), 
com.edb.finance.appl.document.livecycleproxy.LiveCycleProxyClient.produceDocuments(LiveCycleProxyClient.java:84), 
com.edb.finance.appl.document.livecycleproxy.LiveCycleProxyClient.produceDocument(LiveCycleProxyClient.java:79), 
com.edb.finance.appl.document.livecycleproxy.LiveCycleProxyClient.produceDocument(LiveCycleProxyClient.java:64), 
com.edb.finance.appl.document.components.decisionreport.dao.DecisionReportDAO.generateDecisionReport(DecisionReportDAO.java:75), 
com.edb.finance.appl.document.components.decisionreport.business.DecisionReport.generateDecisionReport(DecisionReport.java:91), 
com.edb.finance.appl.document.components.decisionreport.business.DecisionReportProxy.generateDecisionReport(DecisionReportProxy.java:44), 
com.edb.finance.appl.document.components.decisionreport.business.report.StandardReportPdfGenerator.generateStandardPdfCaseReport(StandardReportPdfGenerator.java:110), 
com.edb.finance.appl.document.components.decisionreport.business.report.DecisionReportGenerator.storeAllCaseReports(DecisionReportGenerator.java:109), 
com.edb.finance.appl.decisionextended.components.decisionextended.business.ejb.DecisionExtendedEJB.updateRecommendationOnCaseAndGenerateReport(DecisionExtendedEJB.java:3990), 
com.edb.finance.appl.decisionextended.components.decisionextended.business.ejb.DecisionExtendedProxy.updateRecommendationOnCaseAndGenerateReport(DecisionExtendedProxy.java:346), 
com.edb.finance.appl.decisionextended.components.decisionextended.business.ServiceHandler.updateRecommendationOnCaseAndGenerateReport(ServiceHandler.java:83), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.createRecommendationInCase(JointLimitService.java:921), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.createRecommendationForCase(JointLimitService.java:706), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.createRecommendationsAllCasesRelatedToGroup(JointLimitService.java:685), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.createRecommendation(JointLimitService.java:643), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.runCreateRecommendationJob(JointLimitService.java:517), 
com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService$$FastClassBySpringCGLIB$$2a40bb74.invoke(<generated>), 
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218), 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779), 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163), 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750), 
org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115), 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264), 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128), 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628), 
java.base/java.lang.Thread.run(Thread.java:829)]
2022-11-04 15:30:56,506 [][][][][ERROR] - javax/activation/DataSource
2022-11-04 15:30:56,508 [][][][][ERROR] - Service threw exception
com.edb.finance.common.exception.SystemException: javax/activation/DataSource
                at com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService.runCreateRecommendationJob(JointLimitService.java:525)
                at com.evry.fs.lending.ecp.jointlimit.ws.resources.jointlimit.JointLimitService$$FastClassBySpringCGLIB$$2a40bb74.invoke(<generated>)
                at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
                at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
                at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
                at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
                at java.base/java.lang.Thread.run(Thread.java:829)

排查思路

  • 验证依赖有效性

    • 用mvn dependency:tree查看依赖树,确认activation依赖未被其他依赖排除,且已成功引入项目。
    • 检查最终部署包(如war包)的WEB-INF/lib目录,确认activation.jar存在。
    • 尝试升级依赖版本至1.1.2,或改用Jakarta EE兼容包jakarta.activation:jakarta.activation-api:2.1.2(需同步修改代码中包名为jakarta.activation)。
  • 类加载器问题排查

    • 从堆栈看是Jetty的WebAppClassLoader加载失败,检查Jetty的类加载配置,确认未限制WEB-INF/lib中类的加载权限。
    • 排查是否存在多版本activation包冲突:检查容器或第三方依赖是否自带旧版本activation类,导致类加载优先级异常。
  • Java模块系统配置

    • 若项目使用模块化(存在module-info.java),需添加模块声明:requires javax.activation;(改用Jakarta包则为requires jakarta.activation;)。
    • 添加JVM启动参数--add-modules javax.activation,确保Java 11模块系统能识别该依赖。
  • 代码与第三方库检查

    • 查看LiveCycleProxyClient.java:269处代码,确认是直接引用还是反射加载javax.activation.DataSource,反射场景需确保类名拼写正确且类加载器可访问。
    • 检查LiveCycle等第三方依赖是否也依赖javax.activation,确保其版本与当前引入的activation包兼容。
  • 构建与环境验证

    • 清理项目构建目录(如target)后重新构建,避免Java 8环境下的编译残留。
    • 确认部署环境使用的是Java 11,未混合Java 8的类库或配置。

内容的提问来源于stack exchange,提问作者JavaGeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:20:43