【问题标题】:poi HSSFCell not found exception in Spring Framework在 Spring Framework 中找不到 poi HSSFCell 异常
【发布时间】:2012-03-08 15:33:08
【问题描述】:

我在存储库 .m2 中添加了 poi 3.0.2 并尝试导入 HSSFCell、HSSFSheet、HSSFWorkbook、HSSFRow。它正在编译没有错误,当我尝试运行应用程序时,出现错误。

我在核心文件夹的 pom.xml 中添加了依赖项

 <dependency>
        <groupId>org.apache</groupId>
        <artifactId>poi</artifactId>
        <version>3.0.2</version>
        <scope>provided</scope>
    </dependency>

但似乎只有 HSSFCell 有导入问题。我尝试不导入该特定类,其他类绝对没问题。我打开罐子,罐子里实际上存在 HSSFCell。错误如下。它会导致Destroying Singletons。

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCell
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2365)
at java.lang.Class.getDeclaredMethods(Class.java:1763)
at java.beans.Introspector$1.run(Introspector.java:1265)
at java.security.AccessController.doPrivileged(Native Method)............

可能的解决方案是什么?

【问题讨论】:

  • Apache POI 3.0.2 日期为 2008 年 2 月,所以它已有 4 年多的历史了!你到底为什么不使用最新版本?

标签: spring maven jboss apache-poi


【解决方案1】:

删除“提供”范围,然后将使用默认(编译)范围。

Provided 表示运行时不需要 jar,因为它将由某个容器“提供”。如果您使用 Compile 范围,则 jar 在运行时应该在类路径中可用。

【讨论】:

    【解决方案2】:

    我找到了另一个解决方案。如果我们按照规定提供范围,我们可以在 jBoss run.bat 中添加类路径并将类添加到 jBoss lib 文件夹中。

    无论哪种方式都有效

    【讨论】:

    • 这确实有效,但不是一个很好的解决方案。这可能会咬你的情况是 1) 如果你想升级你的 poi 库,你必须在 JBoss 和 maven 文件中都这样做,你可能会忘记这样做。如果您确实忘记了,您将遇到难以跟踪的类解析问题 2) 如果您在服务器上运行其他应用程序,他们的类路径中会有这个 jar,这不是必需的。与 JBoss 相比,让 maven 处理应用程序的类会遇到更少的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 2012-04-28
    • 2011-09-13
    • 1970-01-01
    • 2019-02-19
    • 2013-10-08
    • 1970-01-01
    • 2014-07-01
    相关资源
    最近更新 更多