JDeveloper 12c部署至WebLogic 12.x时遇ClassNotFoundException错误
解决JDeveloper 12c部署到WebLogic 12.x时的JpsApplicationLifecycleListener类找不到问题
这个问题我之前在部署ADF项目到WebLogic时碰到过,核心原因是WebLogic尝试加载JPS(Java Platform Security)相关的监听器,但对应的类或者依赖配置出了问题。下面给你几个具体的排查和解决方向:
1. 检查WebLogic域的JPS配置状态
这个JpsApplicationLifecycleListener属于Oracle JPS组件,只有当你的WebLogic域启用了JPS(比如配置了ADF安全、Oracle身份管理相关功能)时,WebLogic才会默认加载这个类。
- 打开WebLogic域的
config/config.xml文件,搜索<jps-config>节点,如果找不到这个节点,说明你的域没有配置JPS。这种情况下,要么是项目里有依赖JPS的组件(比如ADF安全),要么是某个间接依赖触发了JPS监听器的加载。 - 如果域没启用JPS但项目确实不需要JPS功能,你需要清理项目中依赖JPS的部分;如果需要JPS,那得给WebLogic域添加JPS配置(可以用Configuration Wizard重新配置域,勾选JPS相关选项)。
2. 排查项目依赖的隐式配置
你说自己的weblogic-application.xml里没配置这个监听器,但很可能是项目依赖的库(比如你引用的adf.oracle.domain库)在它自身的META-INF/weblogic-application.xml中配置了这个监听器,导致部署时被WebLogic读取并加载。
- 找到
adf.oracle.domain库的位置(一般在JDeveloper的安装目录或者WebLogic的Oracle Common目录下),解压它的jar文件,查看META-INF/weblogic-application.xml里是否包含JPS监听器的配置。 - 如果项目不需要ADF域相关的安全功能,可以尝试注释掉
weblogic-application.xml里的<library-ref>中对adf.oracle.domain的引用,再重新部署试试。
3. 确认WebLogic的JPS库是否存在
这个类所在的jar包是jps-wls.jar,你可以在WebLogic的安装路径里找一下,路径大概是:
ORACLE_HOME/oracle_common/modules/oracle.jps_12.1.3/jps-wls.jar
- 如果这个jar包不存在,说明你的WebLogic安装不完整,缺少JPS组件,需要重新运行安装程序,勾选JPS相关的选项进行补充安装。
- 如果jar包存在,确认WebLogic域的类路径是否包含这个jar,可以检查域的
lib目录或者查看WebLogic启动脚本中的类路径配置,确保这个jar被正确加载。
4. 手动禁用JPS监听器(谨慎使用)
如果你确认项目完全不需要JPS功能,可以在自己的weblogic-application.xml里添加配置,手动禁用这个监听器:
<weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-application"> <!-- 原有的配置内容 --> <!--<listener> <listener-class>oracle.adf.share.weblogic.listeners.ADFApplicationLifecycleListener</listener-class> </listener>--> <!--<listener> <listener-class>oracle.mds.lcm.weblogic.WLLifecycleListener</listener-class> </listener>--> <library-ref> <library-name>adf.oracle.domain</library-name> </library-ref> <!-- 添加禁用JPS监听器的配置 --> <listener> <listener-class>oracle.security.jps.wls.listeners.JpsApplicationLifecycleListener</listener-class> <disable>true</disable> </listener> </weblogic-application>
- 注意:这个方法只适合完全不依赖JPS的项目,如果项目里有ADF安全或者其他JPS相关的功能,禁用后会导致这些功能失效。
另外,你还可以解压项目打包后的ear/war文件,全局搜索JpsApplicationLifecycleListener,看看是哪个配置文件引入了这个监听器,这样能更精准定位问题根源。
内容的提问来源于stack exchange,提问作者Ali Habbash
相关产品推荐
相关产品推荐

