来自 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之后的文件意外结束(
解决:java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject报错问题。
2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service
错误:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;