运行简易REST Web服务时遭遇ClassNotFoundException及WebLogic部署异常
问题分析
这个java.lang.ClassNotFoundException错误说明你的Web应用在部署时需要Oracle ADF Faces内部的标签类,但WebLogic服务器找不到对应的jar包。这个类属于Oracle ADF(Application Development Framework)的View层组件——哪怕你是在开发REST服务,也可能不小心引入了ADF相关的配置或依赖,才触发了这个问题。
解决方案
我给你几个排查方向,按顺序尝试:
检查并移除不必要的ADF依赖(如果是纯REST服务)
如果你的REST服务不需要ADF UI组件支持,先排查项目中是否意外引入了ADF相关内容:- 检查项目里的JSP/JSF页面,有没有使用ADF的
<af:region>这类标签; - 查看
web.xml,是否配置了ADF相关的过滤器、监听器(比如ADFContextFilter); - 打开Oracle IDE的项目属性→Libraries and Classpath,移除所有ADF相关的库,然后重新打包部署。
- 检查项目里的JSP/JSF页面,有没有使用ADF的
确保ADF组件在WebLogic服务器中可用(如果确实需要ADF)
如果你的项目确实依赖ADF,那要确认WebLogic服务器已经安装了ADF扩展:- 检查WebLogic的安装目录
MW_HOME/oracle_common/modules,确认存在oracle.adf.view_11.1.1.jar(这个jar包含缺失的RichDeclarativeComponentTag类); - 如果服务器端有这个jar,需要在Web应用的
weblogic.xml中添加对ADF模块的引用,让WebLogic在部署时加载该模块:<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"> <!-- 其他配置 --> <wls:module-ref> <wls:module-name>oracle.adf.view</wls:module-name> <wls:module-type>jar</wls:module-type> </wls:module-ref> </wls:weblogic-web-app> - 或者在Oracle IDE的部署配置中,确保ADF相关库被设置为“Deploy to Server”(而不是仅编译时依赖)。
- 检查WebLogic的安装目录
清理缓存并重新部署
有时候WebLogic的临时缓存会导致类加载异常,按以下步骤操作:- 停止WebLogic服务器;
- 删除服务器临时目录下的内容:
DOMAIN_HOME/servers/[你的服务器名称]/tmp; - 重新打包你的REST服务项目,确保包内没有损坏的依赖;
- 重新启动服务器并部署项目。
额外注意点
- 你的环境是Java 1.6和Oracle IDE 11.1.1.9,这个版本组合是兼容ADF 11g R1的,但要确保所有组件版本匹配,避免版本冲突;
- 纯REST服务尽量保持依赖精简,只引入JAX-RS相关的库(比如Jersey或Oracle的JAX-RS实现),减少不必要的UI组件依赖,避免类似的部署问题。
内容的提问来源于stack exchange,提问作者Elva




