XML-BEANS compiled schema: Could not locate compiled schema resource

1、问题概述?

使用JAVA+POI向Excel中写入折线图的时候,报错如下:

Exception in thread "main" org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource org/apache/poi/schemas/ooxml/system/ooxml/stmarkersize9eb1type.xsb (org.apache.poi.schemas.ooxml.system.ooxml.stmarkersize9eb1type) - code 0
    at org.apache.xmlbeans.impl.schema.XsbReader.<init>(XsbReader.java:63)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.resolveHandle(SchemaTypeSystemImpl.java:931)
    at org.apache.xmlbeans.SchemaComponent$Ref.getComponent(SchemaComponent.java:111)
    at org.apache.xmlbeans.SchemaType$Ref.get(SchemaType.java:1072)
    at org.apache.xmlbeans.impl.schema.SchemaPropertyImpl.getType(SchemaPropertyImpl.java:85)
    at org.apache.xmlbeans.impl.schema.SchemaTypeImpl.createAttributeType(SchemaTypeImpl.java:1055)
&nb

<think>好的,我现在遇到了一个关于XML-BEANS的不兼容次要版本错误,需要解决。错误信息显示“Incompatible minor version - expecting up to 23, got 24”,这说明某个xbean.jar的版本不兼容。用户提到他们在Eclipse中删除了xbean-2.1.0.jar但没用,后来在Tomcat的部署包下删除才解决了问题。我需要根据这些信息找到正确的解决方案。 首先,我应该确认错误的原因。根据引用[1],错误是由于XML-BEANS编译模式中的次要版本不兼容引起的,具体是预期最高版本23,但实际是24。这可能是因为项目中使用的XML-BEANS(xbean.jar)版本与Apache POI或其他依赖库所需的版本不一致。 接下来,用户提到尝试删除xbean-2.1.0.jar但无效,直到在Tomcat的部署目录下删除才生效。这说明可能存在多个位置的xbean.jar,尤其是在构建路径和运行时环境(如Tomcat的lib目录)中都有该jar包。因此,需要检查所有可能的路径,确保彻底移除旧版本。 然后,我需要找到与Apache POI 3.7兼容的xbean.jar版本。根据Apache POI的版本兼容性文档,POI 3.7应该对应XMLBeans 2.3.0或2.4.0。但用户遇到的错误显示版本24(对应2.4.0?),而期望的是23(2.3.0)。可能用户的项目中混用了不同版本的XMLBeans,导致冲突。 正确的做法应该是统一所有相关依赖的版本。例如,如果使用POI 3.7,可能需要XMLBeans 2.3.0。用户需要检查项目的pom.xml或构建脚本,确保没有引入高版本的xbean.jar。同时,检查Tomcat的lib目录是否有残留的旧版本,并彻底删除。 另外,用户可能需要排除传递依赖。例如,如果使用Maven,可能需要在依赖项中添加exclusion标签,防止其他库引入不兼容的XMLBeans版本。手动管理依赖时,要确保所有地方都使用同一版本。 最后,清理和重新构建项目也很重要,避免旧的编译文件残留。如果问题依然存在,可能需要升级整个项目到支持更高版本XMLBeansPOI版本,如POI 4.x以上,以兼容较新的XMLBeans 3.x,但这可能需要代码调整。 总结步骤:检查所有位置的xbean.jar版本,统一为2.3.0;排除传递依赖;清理构建环境;必要时升级POI版本。</think>### 解决方案:XML-BEANS次要版本不兼容问题 #### 问题原因 错误`Incompatible minor version - expecting up to 23, got 24`表明项目中存在XML-BEANS(`xbean.jar`)的版本冲突。具体来说: 1. **Apache POI 3.7** 需要与 **XML-BEANS 2.3.0** 兼容(次要版本23)[^1][^5]。 2. 当前环境中存在更高版本的XML-BEANS(如2.4.0,次要版本24),导致不兼容。 #### 解决步骤 1. **确认依赖关系** - 检查项目中所有与XML-BEANS相关的依赖(如Apache POI、Axis2等)。 - 在Maven/Gradle中,添加以下配置以**排除旧版本**: ```xml <!-- Maven示例 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.7</version> <exclusions> <exclusion> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> </exclusion> </exclusions> </dependency> <!-- 手动指定正确版本 --> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.3.0</version> </dependency> ``` 2. **清理残留文件** - **Tomcat部署目录**:删除`webapps/[项目名]/WEB-INF/lib/xbean-2.1.0.jar`或其他高版本文件[^4]。 - **IDE构建路径**:在Eclipse/IntelliJ中检查`Build Path`,移除所有非2.3.0版本的`xmlbeans-x.x.x.jar`。 3. **版本匹配表** | 组件 | 兼容版本 | 不兼容版本 | |----------------|-------------------|------------------| | Apache POI 3.7 | XML-BEANS 2.3.0 | XML-BEANS ≥2.4.0 | | Tomcat | 与POI版本保持一致 | 任意冲突版本 | 4. **验证解决** - 重新构建项目并部署到Tomcat。 - 若仍报错,使用以下命令检查依赖树: ```bash mvn dependency:tree -Dincludes=org.apache.xmlbeans ``` #### 扩展建议 - **升级到POI 4.x+**:新版POI(如4.1.2)支持XML-BEANS 3.0.0+,可彻底避免此问题,但需调整代码兼容性[^5]。 - **环境隔离**:使用Docker容器或虚拟环境隔离运行时依赖,避免多项目版本冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值