【问题标题】:XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/sE130CAA0A01A7CDE5A2B4FEB8B311707/index.xsbXML-BEANS 编译架构:找不到编译架构资源 schemaorg_apache_xmlbeans/system/sE130CAA0A01A7CDE5A2B4FEB8B311707/index.xsb
【发布时间】:2014-08-20 10:48:34
【问题描述】:

我正在编写一个将数据导出到 Excel 工作表的应用程序。

我不会使用 XSSFWorkbook 类,因为我的 Excel 超出了 HSSFWorkbook 类的 255 列的限制。

我下载了 Apache POI 库,并将以下库包含到我的项目中: - poi-3.9.jar - poi-excelant-3.9.jar - poi-ooxml-3.9.jar - poi-ooxml-schemas-3.9.jar - poi-scratchpad-3.9.jar - dom4j-1.6.1.jar - stax-api-1.0.1.jar - xmlbeans-2.3.0.jar

当我导出数据以获取 Excel 工作表时,出现此运行时错误:

java.lang.ExceptionInInitializerError
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
    at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
    at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
    at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
    Truncated. see log file for complete stacktrace
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.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(Unknown Source)
    at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.<clinit>(Unknown Source)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
    at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
    Truncated. see log file for complete stacktrace
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:513)
    at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(Unknown Source)
    Truncated. see log file for complete stacktrace
Caused By: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/sE130CAA0A01A7CDE5A2B4FEB8B311707/index.xsb (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index) - code 0
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.<init>(SchemaTypeSystemImpl.java:1519)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:273)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.<init>(SchemaTypeSystemImpl.java:185)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    Truncated. see log file for complete stacktrace

我在一篇文章中读到,不能因为 xbean-xx.jar 的版本,我注意到我没有这个库,我在我的项目中包含了 xbean-2.3.jar 版本并且没有改变任何东西.

我在另一篇关于 stackoverflow 其他解决方案的文章中读到:xmlbeans could not locate schema resource when repacking xml beans jar into my own jar。我不知道我是否正确理解了解决方案,但文件 /schemaorg_apache_xmlbeans/system/sE130CAA0A01A7CDE5A2B4FEB8B311707/index.xsb 在 jar poi-ooxml-schemas-3.9.jar 中,所以我认为这不是我的问题。

谁能帮帮我?谢谢。

【问题讨论】:

  • 你确定你的类路径中没有任何旧的 xmlbeans 或 poi jars 吗?
  • 至少不是xmlbeans的名字。
  • 如果您尝试按照this POI FAQ entrypoi-ooxml-schemas jar 切换为完整的ooxml-schemas-1.1 jar,会发生什么?
  • 谢谢,但我尝试使用 ooxml-schemas-1.1 并继续遇到同样的问题。
  • 您确定您的类路径中只有一个 xmlbeans jar,并且认可的 jar 或安全管理器或其他任何东西都没有什么好笑的吗?相同的 jar 组合在数千台机器上运行良好......

标签: java apache-poi xmlbeans


【解决方案1】:

我发现了你的问题

异常的关键是这样的:

XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/sE130CAA0A01A7CDE5A2B4FEB8B311707/index.xsb 

接下来,我们看到您包含所有 jar 的相当非标准的方式(通常不推荐,包括出于这样的原因),我们看到以下几行:

<zipfileset src="../lib/poi-ooxml-3.10-FINAL-20140208.jar" includes="**/*.class, **/*.properties, **/*.txt" />
<zipfileset src="../lib/ooxml-schemas-1.1.jar" includes="**/*.class, **/*.properties" />

您明确地仅拉入某些类型的文件,并从这些 jar 中排除所有其他文件。查看异常中丢失文件的扩展名 - .xsb。查看您的明确包含列表。看看你错过了什么?

您应该重新访问构建 jar 的整个方式以选择更“正常”的内容,或者确保您实际上包含了您正在内联的 jar 的所有相关部分,例如 .xsb 文件您需要的异常状态

【讨论】:

  • Yiiiiha!!我解决了这个问题。你是对的。问题是,在我的例子中,只编译了 .class 和 .properties 文件。我没有包含某种文件,而是排除了我不想编译的文件。 谢谢大家。
  • 很高兴解决了这个问题!不要忘记“接受”答案,这样每个人都知道它已经解决了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2015-05-18
相关资源
最近更新 更多