java.lang.ClassCastException: someClass 与 someClass 不兼容的含义

2024-01-15

我在 XPage 应用程序中偶尔遇到异常:

java.lang.ClassCastException: someClass incompatible with someClass.

两个提到的类是相同的,都是用作会话bean的类。我无法用谷歌搜索任何涉及我的问题的内容。对此的通常解释是设计元素的变化,而不是我的情况。

从那时起,XPage 应用程序变得不可用(使用会话 bean someClass 的页面),直到重新启动 http 任务或重新保存 faces-config.xml。

在某些情况下,这与其他异常有关:

com.ibm.jscript.InterpretException: Script interpreter error, line=x, col=y: 
Java method 'method(signature containg someClass)'
on java class 'someOtherClass' not found

这种行为背后的原因是什么?


Philippe Riand 通过电子邮件解释了这一点:

发生这种类转换是因为同一个类已被 2 个不同的类加载器加载了两次。因此,从 Java 的角度来看,它们是不同的,并且转换失败。

现在,每个 XPage 应用程序都有自己的类加载器。但是每次应用程序发生设计更改(例如通过 Domino Designer)时,都会丢弃该类加载器。这是必需的,因为对 XPage 的更改会生成一个新的 Java 类,然后应加载该新 Java 类而不是以前的类。发生这种情况时,类加载器将被丢弃并创建一个新的。然后,所有与应用程序相关的类都会根据需要重新加载,即使它们没有更改。这是 J2EE 服务器实现的常见行为。 也就是说,如果您的代码在以下范围内缓存对象not当设计发生改变时被丢弃,那么这种情况就很可能发生。例如,当发生设计更改时,applicationScope 和 sessionScope 目前不会被丢弃,这可能会导致此问题。这是一个设计选择,因为放弃范围有时会带来糟糕的开发人员体验,但也有这个缺点。

最后,保存 faces-config.xml 作为解决方法。保存此文件后,整个模块都会从内存中丢弃,包括范围,这解释了它的工作原理。对自定义 Java 类进行更改应该重新加载模块并消除问题。

所以看来将bean(甚至间接)放入sessionScope或applicationScope就是原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.ClassCastException: someClass 与 someClass 不兼容的含义 的相关文章

随机推荐

  • 禁用表单仍然允许子控件接收输入

    最近几天我在使用 delphi 时感到很头疼 我想做的很简单 在某个点阻止接口并在其他点之后启用 但听起来很简单 我无法弄清楚为什么设计允许某些事情 所以澄清一下 1 创建一个项目 2 在表单中放置一个编辑和一个按钮 编辑的Tab顺序必须是
  • Chrome / Safari 未填充 Flex 父级的 100% 高度

    我想要一个具有特定高度的垂直菜单 每个子项都必须填充父项的高度 并且文本居中对齐 孩子的数量是随机的 所以我必须使用动态值 Div container包含随机数量的子项 item 总是必须填充父级的高度 为了实现这一点 我使用了 Flexb
  • 创建 mozilla 扩展以在其中显示弹出窗口和 iframe

    我正在尝试开发一个 mozilla 扩展 我只需要在弹出窗口中显示 iframe 但不知道该怎么做 我的要求是 在顶部导航工具栏添加扩展按钮 单击扩展按钮时在弹出窗口上显示 iframe 我没有找到任何与此类似的教程 请帮我 谢谢 哈里普拉
  • PHP使用正则表达式将大写文件扩展名转换为小写

    我正在尝试实现以下转换 IM22 htp JPG gt IM22 htp jpg 到目前为止 我已经尝试了以下方法 但似乎不起作用 string IM22 htp JPG pattern w i replacement 1 strtolow
  • 在 p:datatable primefaces 之外找不到标识符为 h:selectBooleanCheckbox 的组件

    我的应用程序中有这段代码 我想将 h selectBooleanCheckbox 值提交到服务器 h selectBooleanCheckbox 位于 p tabView 内部和 p dataTable 外部 我想提交 h selectBo
  • Maven:自定义 web-app 项目的 web.xml

    我有一个 Web 应用程序 Maven 项目 我想根据正在运行的配置文件自定义 web xml 文件 我正在使用 Maven War plugin 它允许我定义一个 资源 目录 可以在其中过滤文件 然而 仅靠过滤对我来说还不够 更详细地说
  • 静态类中静态方法中的变量

    请考虑这段代码 1 public static class MyClass 2 3 public static DateTime MyMethod DateTime dt 4 5 DateTime temp new DateTime 6 t
  • 使用字符串数组声明 java 枚举

    我试图根据从数据库检索的数据声明枚举类型 我有一个方法 它返回表中所有行的字符串数组 我想将其转换为枚举类型 有没有办法用数组构造枚举 这是我尝试过的 但从它在 Eclipse 中的外观来看 这似乎只是创建了一个具有该名称的方法 publi
  • CodeMirror - 样式 Tern 智能感知标签

    我正在使用 CodeMirror 的 Tern 插件 它向编辑器添加了智能感知功能 即弹出内联提示标签 我想改变提示标签的样式 该怎么做 Tern 将 CSS 类名附加到提示框 您可以利用它们来设置样式 例如 CodeMirror Tern
  • 编写脚本来检查远程主机服务是否运行[重复]

    这个问题在这里已经有答案了 这是脚本 但即使 Apache 正在运行其 show stop 输出也是错误的 我使用的是 Ubuntu 12 04 ssh qn root ip if ps aux grep h ttpd gt dev nul
  • 发送电子邮件时出现 VBScript 错误“80040211”

    我在发送电子邮件时遇到错误 错误 80040211 这是我的代码的示例 Dim objMessage Set objMessage CreateObject CDO Message objMessage Subject Super Serv
  • 向元组添加值

    我最初使用 Idictonary 在 MVC 模型中存储字符串值 如下所示 public IDictionary
  • JavaScript 数组排序中的奇怪行为[重复]

    这个问题在这里已经有答案了 我在尝试对 JavaScript 数组进行排序时遇到了奇怪的行为 var arr a b C d e f g h I k arr sort function a b console log a b if a le
  • 为什么 Funcs 不接受超过 16 个参数?

    由于 Javascript 是我最精通的语言 因此我熟悉使用函数作为一等对象 我原本以为C 缺少这个功能 但后来我听说了Func and Action and delegate 我认为这非常棒 例如 您可以声明一个Func连接两个字符串并在
  • 我这里如何使用锁和条件?

    这里我有一个任务 我必须使用锁和条件 在方法 sum 和 randomSwap 中是我必须完成的任务 所以列举了我必须做的事情 首先是没有我编辑的方法中的类和任务 public class LockedDataObject extends
  • Darwin 10.15 上的自修改代码导致“格式错误的 mach-o 图像”?

    我有一个可以生成自修改代码的程序 请参阅https tigress wtf selfModify html https tigress wtf selfModify html如果你有兴趣的话 它在 x86 Darwin 和 Linux 上运
  • Zend 框架和 Couch DB

    Zend Framework 是否具有本机 Couch DB 支持 我只找到了 Matthew Weier O Phinney 的 Zend Couch http framework zend com wiki display ZFPROP
  • 如何使用 Elixir 生成随机 url 安全字符串

    我需要能够生成随机 url 安全字符串 以便我可以在链接中使用这些字符串 例如发送到用户电子邮件的激活链接 那么如何生成它呢 有没有办法只用 Elixir 来做到这一点 或者我必须使用一些库 您可以做的是生成一个 Base64 编码的字符串
  • 在.NET Core应用程序中可靠地终止通过cmd进程启动的node.js进程

    我想解决什么问题 为了改进我的构建管道 我想添加端到端测试步骤 我计划通过 CLI 工具 NET 控制台应用程序 来实现它 该工具将启动并编排一些npm node命令 进程 更具体地说 将会有 后端流程 前端流程 和一个测试过程 当测试过程
  • java.lang.ClassCastException: someClass 与 someClass 不兼容的含义

    我在 XPage 应用程序中偶尔遇到异常 java lang ClassCastException someClass incompatible with someClass 两个提到的类是相同的 都是用作会话bean的类 我无法用谷歌搜索