当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.NoClassDefFoundError:org/apache/poi/EncryptedDocumentException

家浩瀚
2023-03-14

我正在构建一个web应用程序,并使用ApachePOI处理excel工作表。当我启动服务器时,出现以下异常。问题是,在我尝试构建它并部署到heroku之前,它一直工作得很好(但可能与此无关)。有人有主意吗??

INFO: Starting service Catalina
Apr 15, 2016 8:28:35 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.53
Apr 15, 2016 8:28:36 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.engine.OnStartup
java.lang.NoClassDefFoundError: org/apache/poi/EncryptedDocumentException
    at org.engine.OnStartup.contextInitialized(OnStartup.java:16)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.EncryptedDocumentException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 10 more

我的pom。xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>psilos-toy</groupId>
<artifactId>psilos-toy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.httpcache4j.resolvers</groupId>
        <artifactId>resolvers-net-urlconnection</artifactId>
        <version>4.0-M6</version>
    </dependency>

    <!-- Apache POI,for handling Excel Files -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.14</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.14</version>
    </dependency>
    <!-- jersey -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>
</dependencies>

还有我的web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">
  <display-name>Restful Web Application</display-name>
  <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
                     com.sun.jersey.spi.container.servlet.ServletContainer
                </servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>org.endpoints</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
  <listener>
    <listener-class>org.engine.OnStartup</listener-class>
  </listener>
</web-app>

共有1个答案

司马钱明
2023-03-14

也许它正在使用Tomcat设置,在类路径上有poi类。在新的Heroku设置中,可能Tomcat7没有这些类(我还没有彻底检查poi类是否与Tomcat7捆绑在一起)。

你可以做的最简单的事情就是通过将poi类与你的应用捆绑在一起来构建一个自包含的应用。这会增加应用程序的大小,但您可以控制poi库的版本。当然,您始终可以将库复制到定义的文件夹中(您知道Tomcat从中加载类)。有关详细信息,请参阅maven shade插件。

 类似资料:
  • 我正在使用ApachePOI读取一些Excel文件。我创建了一个控制台应用程序来完成这项工作,之后我尝试将代码集成到SpringMVCwebapp中(我知道没什么特别的)。我已将相同的Jar文件包含到我的类路径中,但每当我尝试运行代码时,都会出现以下错误: 我相信类Font是在编译时找到的,但不是在运行时。我很确定问题不在于ClassPath,但是我不知道如何解决这个问题。 编辑:当我用main方

  • 我使用maven来管理我的web项目依赖关系。我添加apache poi依赖到我的pom文件.它不显示错误时,符合.但当它运行,它将抛出运行时间异常在我的Main Application()类.而它给java.lang.NoClassDefFoundError: org/apache/poi/ss/userModel/Workbook 我有一门主要的应用课程。 } 下面是我的补充

  • 我下面的自定义日志工具来实现日志功能的电子邮件使用log4j。 我已经将log4j:1.2.17的依赖项以及jar添加到类路径中。我正在尝试使用arquillian进行测试。但每次我都会犯同样的错误。 我知道它即将出现,因为我使用的是级别而不是优先级,而优先级现在已被弃用。我已经添加了正确的jar和导入,但是当我运行测试时仍然会出现错误。 我也提到了这些链接,但对我来说没有任何效果。 是什么导致了

  • 我正在开发maven jersey rest api,并使用hbase和hadoop。下面是我的pom。xml文件。 我的m2存储库不包括org/apache/hadoop下的跟踪文件夹。我再次删除了它更新了maven,但仍然没有运气。

  • 我是Spring的新手。我用的是BasicDataSource 我使用了hibernate-commons-annotations-3.0.0。ga.jar,commons-pool2-2.0。jar,commons-dbcp2-2.1。jar,mysql-connector-java-5.1.4。jar,hibernate-core-3.6.9。最终的罐子 我得到了这个错误:

  • 我正在尝试部署我的应用程序,但它给了我一个错误:未能实例化SLF4J LoggerFactory报告的异常: 我在Maven依赖区有罐子: weblogic中log4j jar的类路径: log4j。xml(来自类路径): 我错了什么?我无法想象。。。请帮帮我!谢谢