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

Tomcat启动Guidewire PolicyCenter失败 抛出SecurityException异常

故障描述

通过Tomcat启动PolicyCenter服务器时,服务器进入启动流程后抛出PolicyCenter unable to start异常,服务无法正常拉起,核心错误堆栈如下:

Caused by: java.lang.SecurityException: class "org.osgi.service.log.LogLevel"'s signer information does not match signer information of other classes in the same package
                            at java.lang.ClassLoader.checkCerts(ClassLoader.java:1150) ~[?:?]
                            at java.lang.ClassLoader.preDefineClass(ClassLoader.java:905) ~[?:?]
                            at java.lang.ClassLoader.defineClass(ClassLoader.java:1014) ~[?:?]
                            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[?:?]
                            at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2489) ~[catalina.jar:9.0.63]
                            at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:875) ~[catalina.jar:9.0.63]
                            at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1376) ~[catalina.jar:9.0.63]
                            at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220) ~[catalina.jar:9.0.63]
                            at org.eclipse.osgi.internal.log.EquinoxLogServices.<init>(EquinoxLogServices.java:90) ~[org.eclipse.osgi-3.13.300.jar:?]
                            at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:68) ~[org.eclipse.osgi-3.13.300.jar:?]
                            at org.eclipse.osgi.launch.Equinox.<init>(Equinox.java:34) ~[org.eclipse.osgi-3.13.300.jar:?]
                            at org.eclipse.osgi.launch.EquinoxFactory.newFramework(EquinoxFactory.java:27) ~[org.eclipse.osgi-3.13.300.jar:?]
                            at com.guidewire.pl.system.service.osgi.OSGiServiceManager.start(OSGiServiceManager.java:102) ~[pl-10.100.0.jar:?]
                            at com.guidewire.pl.system.server.InitTab.startDependency(InitTab.java:465) - (com.guidewire.pl.system.service.osgi.OSGiServiceManager@700654d0) ~[pl-10.100.0.jar:?]
                            at com.guidewire.pl.system.server.InitTab.enterQuiesce(InitTab.java:723) ~[pl-10.100.0.jar:?]
                            at com.guidewire.pl.system.server.InitTab.increaseRunLevelTo(InitTab.java:648) ~[pl-10.100.0.jar:?]
                        ... 47 more
根因分析

抛出的SecurityException是JVM类加载阶段的证书校验失败:同一个org.osgi.service.log包下的类,来自两个签名信息不一致的JAR包。
从堆栈可以看到,启动流程初始化Equinox OSGi容器时加载LogLevel类触发校验,这类问题均由OSGi依赖重复引入导致:

  • PolicyCenter 10.x版本自带指定版本的Eclipse Equinox OSGi框架依赖,相关JAR都经过统一签名
  • 部署时如果在Tomcat公共lib目录、或应用WEB-INF/lib目录下额外放入了其他版本的OSGi日志服务JAR(比如手动升级组件、拷贝其他应用依赖时误放入),两个来源的同包类签名不匹配,就会触发该安全异常阻断启动。
修复方案
  • 排查冲突依赖:遍历两个路径查找重复JAR:Tomcat根目录lib文件夹、PolicyCenter部署目录WEB-INF/lib文件夹,筛选所有文件名包含org.osgi.service.log的JAR包
  • 移除冲突依赖:仅保留PolicyCenter官方原始发布包中内置的OSGi相关JAR,删除其余位置额外引入的版本不匹配的OSGi日志服务JAR,确保类加载路径下org.osgi.service.log包下所有类均来自同一签名、同一版本的依赖包
  • 清理缓存重启:清空Tomcat目录下work、temp文件夹内的所有缓存文件,重新启动Tomcat验证服务启动状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:18:14