来自 xmlbeans 的 RuntimeException - 找不到已编译的模式

Posted

技术标签:

【中文标题】来自 xmlbeans 的 RuntimeException - 找不到已编译的模式【英文标题】:RuntimeException from xmlbeans - can't find compiled schema 【发布时间】:2010-11-13 22:12:45 【问题描述】:

在执行一些依赖于生成的 xmlbeans 类的代码时,我遇到了 RuntimeException。我不知道这是不是:

我在代码生成或打包过程中遗漏了一些东西 缺少运行时依赖项 一个误导性的错误消息,我应该去别处看看。

xbean.jar 版本在构建和执行环境中是一样的。有人看过这个或有任何想法吗?

谢谢。

……剪…… 原因:java.lang.RuntimeException:无法实例化 SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException):xbean.jar 的版本是否正确? 在 schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.loadTypeSystem(未知来源) 在 schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.(未知来源) ... 38 更多 引起:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:494) ... 40 更多 原因:org.apache.xmlbeans.SchemaTypeLoaderException:XML-BEANS 编译模式:找不到编译模式资源 schemaorg_apache_xmlbeans/system/s2B8331230CBD98F4933B0B025B6BF726/index.xsb(schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.index)- 在 org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.(SchemaTypeSystemImpl.java:1504) 在 org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260) 在 org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.(SchemaTypeSystemImpl.java:183) ... 44 更多 ……剪……

【问题讨论】:

【参考方案1】:

约翰的回答对我来说是一个很好的暗示。我使用 xmlBeans 生成 Java 类,并在我的项目中手动将源文件从“noNamespace”中复制出来以修改它们。不幸的是,我没有认识到“schemaorg_apache_xmlbeans”文件夹中也有生成的类文件并且没有复制它们。 切换到使用生成的 jar 文件后,一切对我来说都很好。

【讨论】:

我使用 wsdltojava 创建了一些肥皂代码。我没有注意到它还创建了一个“资源”文件夹,我没有复制到我的项目中。【参考方案2】:

我以前从未使用过该库,但我可以猜到发生了什么。 有了那个限定词(即,我只是在编造这个,但已经 7 个小时了,没有其他人编造任何东西)......

声明很明显:某些内容已在某处编译并且无法加载。我不认为这个东西在 jar 文件中;我猜这是您的资源之一,已被编译/缓存到某个位置。

我猜要么:

它编译在一个无法加载的地方(混乱的类路径/配置) 已编译的内容和要加载的内容之间的版本控制错误

您是否在编译和加载/运行之间更改了某些内容(例如架构版本?)?

你可以删除编译的版本并重新编译然后尝试重新加载吗?

你能在文件系统中找到编译后的版本吗?

要做到这一点,你可以试试

grep“s2B8331230CBD98F4933B0B025B6BF726”`查找。`

来自某个合适的目录。

您能否对导致编译和运行时环境出现问题的类/资源执行 md5?它们匹配吗?

希望里面的东西能帮助或引发一个想法。

【讨论】:

【参考方案3】:

当有一个脚本(ant、maven、...)可以处理 XMLBeans 编译并且使用另一种机制来编译和运行其余代码时,我经常看到这个问题。有时,一个片段会删除 XMLBeans 在堆栈跟踪中查找的生成文件,但会留下生成的 XMLBeans Java 文件,因此一切都会编译并看起来很好。

我在使用选项输出源文件而不是类文件时也看到了这一点。非 Java 源文件仅直接生成到 XMLBeans 生成的类文件夹或 jar 文件中。

【讨论】:

【参考方案4】:

这些类文件是在resources/schemaorg_apache_xmlbeans 目录中生成的。我已经看到 xmlbeans 行为,其中生成的 ant 脚本未能将此目录包含在它创建的 jar 中(可能是由于错误?)检查它是否已包含在 jar 中。您可以手动重新 jar,或检查您的代码生成命令行选项。

【讨论】:

以上是关于来自 xmlbeans 的 RuntimeException - 找不到已编译的模式的主要内容,如果未能解决你的问题,请参考以下文章

xsd:包含soapUI中的异常:org.apache.xmlbeans.XmlException:org.apache.xmlbeans.XmlException:错误:null之后的文件意外结束(

在 Android 上使用 XMLBeans

解决:java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject报错问题。

xmlBean类

2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service

错误:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;