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

时间:2009-07-25 00:19:55

标签: java xml xmlbeans

我在执行一些依赖于生成的xmlbeans类的代码时遇到RuntimeException。我无法弄清楚这是不是:

  • 我在代码生成或打包过程中遗漏了一些东西
  • 缺少运行时依赖性
  • 一个误导性的错误信息,我应该在其他地方寻找。

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

感谢。

...snip...
Caused by: java.lang.RuntimeException: Could not instantiate SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException): is the version of xbean.jar correct?
    at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.loadTypeSystem(Unknown Source)
    at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.(Unknown Source)
    ... 38 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    ... 40 more
Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/s2B8331230CBD98F4933B0B025B6BF726/index.xsb (schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.index) - code 0
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.(SchemaTypeSystemImpl.java:1504)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.(SchemaTypeSystemImpl.java:183)
    ... 44 more
...snip...

4 个答案:

答案 0 :(得分:1)

约翰的回答对我来说是一个很好的暗示。我使用xmlBeans生成Java类,并在我的项目中手动将源文件复制到“noNamespace”之外进行修改。遗憾的是,我没有意识到“schemaorg_apache_xmlbeans”文件夹中也生成了类文件,并且没有复制它们。
切换到生成的jar文件的使用后,一切正常。

答案 1 :(得分:0)

我之前从未使用过该库,但我可以猜测正在发生什么。 有了这个资格赛(也就是说,我只是做了这个,但是已经有7个小时了,没有其他人做过任何事情)......

说明显而易见:某些地方已被编译,无法加载。我不认为这个东西在jar文件中;我猜这是你的资源之一被编译/缓存到某个位置。

我猜也是:

  • 它是在一个无法加载的地方编译的(搞乱了classpath / config)
  • 在编译内容和想要加载的内容之间进行版本控制是错误的

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

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

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

为此,您可以尝试

grep“s2B8331230CBD98F4933B0B025B6BF726”`find .`

来自某个合适的目录。

你能在类/资源上做一个md5导致编译和运行时环境出现问题吗?他们匹配吗?

希望那里的某些东西有助于或引发思考。

答案 2 :(得分:0)

我经常看到这个问题,因为有一个脚本(ant,maven,...)可以处理XMLBeans编译,另一种机制用于编译和运行其余的代码。有时,一个部分将删除XMLBeans在堆栈跟踪中查找的生成文件,但是将保留生成的XMLBeans Java文件,以便所有内容都可以编译并且看起来很好。

我在使用选项输出源文件时也看到过这种情况,但不是类文件。非Java源文件仅直接生成到XMLBeans生成的类文件夹或jar文件中。

答案 3 :(得分:0)

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