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

从错误的 jar 加载类并获取类强制转换异常

常培
2023-03-14

我在我的项目中使用了几个不同的模式。它们每个都被编译到一个单独的jar中,每个都使用一个单独的包,使用xmlbean ant任务。我似乎只能成功地解析类路径中第一个模式jar的xml(使用.Factory.parse(String xml)方法),否则我会得到一个ClassCastExc的,如此错误中所述。如果我更改jar顺序,不同的模式将能够成功解析,并且ClassCastExc的将被抛出用于不同的类。

我已经做了一些调试,我得出的结论是,schemaorg_apache_xmlbeans.namespace包的结构可能是负责任的。由于我的架构没有命名空间,因此我构建的每个 jar 都共享一些在相同包中同名的文件。具体来说,我已经看到每个罐子都有一个schemaorg_apache_xmlbeans.命名空间._nons.xmlns.xsb文件,该文件似乎指向该jar的实际架构。如果工厂使用此文件来确定它将用于分析其拥有的 xml 的某些类,这可以解释 ClassCastException,因为它只查看类路径上的第一个文件,而不是它所具有的 XML 的正确文件。是否有任何选项可以为 wsdls 或 xsds 或 ant 任务“wsdl 到 java”编译中生成的模式(如 java 命名空间)指定命名空间?

共有2个答案

孙熠彤
2023-03-14

这可以通过对分析方法使用 XML 选项参数来解决。示例:Xml选项选项 = 新的 xml 选项();opts.setDocumentType(你的文档.Factory.newInstance().schemaType());你的文档解析(字符串xml,opts);

请参见xmloptions.setDocumentType

锺宜
2023-03-14

我认为问题是XMLBeans使用了某种内部模式缓存,将它们混合在一起。

您是否尝试过为架构 (xsds) 提供不同的命名空间?

 类似资料:
  • 例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g

  • 我以json字符串的形式生成输入数据。 对于主题-myinput 我的班级是这样的: 我得到下面类铸造异常: 线程“countries-streaming-analysis-app-f7f95119-4401-4a6e-8060-5A138FFADB2-StreamThread-1”组织中的异常。阿帕奇。Kafka。溪流。错误。异常:流程中捕获到异常。taskId=0_0,processor=KS

  • 我模拟了Jsch()类,并在下面的方法中获得了类强制转换异常。 原始方法。 联机获取Mockito异常。 例外情况: java.lang.ClassCastException:com.jcraft.jsch。频道$MockitoMock$1983492043不能转换为com.jcraft.jsch.ChannelSftp 测试用例调用方法。

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial