当前位置: 首页 > 知识库问答 >
问题:

类加载器导致的Tomcat ClassCastException

彭兴朝
2023-03-14

我在Tomcat中实现自己的身份验证过滤器时遇到了一些问题。当我部署项目时,我得到以下日志:

原因:java。lang.ClassCastException:类com。somename。第。sso。卡蒙达。无法将KeyDoppessAuthenticationProvider强制转换为类org。卡蒙达。bpm。发动机Rest安全授权。AuthenticationProvider(com.somename.sec.sso.camunda.keydeposAuthenticationProvider位于加载程序java.net.URLClassLoader@6fc6f14e的未命名模块中;org.camunda.bpm.engine.rest.security.auth.AuthenticationProvider位于加载程序org.apache.catalina.loader.ParallelWebappClassLoader@7a498efa的未命名模块中)

这很奇怪,因为我的keydeposauthenticationprovider实现了AuthenticationProvider。显然,由于类装入器不同,强制转换失败。我想我的网站上的演员阵容失败了。定义身份验证筛选器时的html" target="_blank">xml文件:

<!-- Container Based Authentication filter -->
  <filter>
    <filter-name>Container Based Authentication Filter</filter-name>
    <filter-class>org.camunda.bpm.webapp.impl.security.auth.ContainerBasedAuthenticationFilter</filter-class>
    <init-param>
      <param-name>authentication-provider</param-name>
      <param-value>com.somename.sec.sso.camunda.KeycloakSSOAuthenticationProvider</param-value>
    </init-param>
  </filter>

有没有办法强制KeycloakSSOAuthentiationProvider加载与AuthenticationProvider相同的类加载器?或者我应该如何解决这个问题?

共有1个答案

邬楚青
2023-03-14

我在Keyclope上也有类似的施法错误。我面临的问题是,在Tomcat(不是嵌入式Tomcat)上运行key斗篷的部分设置中,您必须将大量key斗篷库文件复制到Tomcat\u home/lib目录中。然后,您还需要那些可用于java代码的LIB,因此它们也包含在POM文件中。

解决方案是设置

 类似资料:
  • 我正在开发jira插件。当我尝试部署它时,我收到一个错误: 创建URL中定义了名为“userService”的bean时出错[bundle://205.0:1/com/softwareplant/tool/service/UserService.class]:通过构造函数实例化Bean失败;嵌套的例外是java。lang.LinkageError:加载程序约束冲突:解析方法“org.slf4j.i

  • 我想知道java中上述类装入器的职责是否可以合并?(不是由用户/程序员,而是由JVM开发人员) 引导加载器从jdk/jre/lib/*加载类,扩展加载器从jdk/jre/lib/ext/*加载,那么将它们结合在一起有什么问题呢? 这样做也可以保存一个级别的委托。不是吗? 我知道它们之间唯一的区别是bootstrap classloader是用本地语言实现的,而extension classload

  • 框架中所有的类都是通过类加载器(ClassLoader)加载的,通过Loader我们可以实现类的统一管理。下面我们一起来看看Loader提供了哪些加载方法: 1. Loader::import 加载一个类或者加载一个包 方法原型 import( $classPath, $type = IMPORT_APP, $extension=EXT_PHP ) 参数名称 参数说明 $classPath 文件的

  • 加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 , 驱动器 ,辅助函数 , 模型 或其他你自己的文件。 注解 该类由系统自动加载,你无需手工加载。 应用程序"包" 包的视图文件 类参考 应用程序"包" 应用程序包(Package)可以很便捷的将你的应用部署在一个独立的目录中, 以实现自己整套的类库,模型,辅助函数,配置,文件和语言包。 建议将这些应用程序包放置在 appli

  • 我的代码的本地版本运行得很好。但是当我进行web部署时,我得到了以下异常: 无法加载文件或程序集“System. Web. WebPage. Razor, Version=2.0.0.0,文化=中性, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040) 相关堆栈跟踪线为 [文件加载

  • 问题内容: 当我尝试使用Terminal中的命令使用python创建虚拟环境时,出现以下错误: 我不是第一个遇到类似错误的人-我尝试遵循此答案的建议并运行: 那没有帮助。也没有以超级用户身份运行commmand。 接下来我应该调查什么? 问题答案: 我有完全相同的错误消息。Continuum Analytics支持小组的Ray Donnelly提供了以下解决方案,为我解决了这个问题: 当您pip安