繁体   English   中英

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

[英]RuntimeException from xmlbeans - can't find compiled schema

我在执行一些依赖于生成的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...

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

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

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

我猜也是:

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

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

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

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

为此,您可以尝试

grep“s2B8331230CBD98F4933B0B025B6BF726”`find .`

从一些合适的目录。

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

希望那里的某些东西可以帮助或触发思想。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM