我制作了一个小型应用程序,可以从excel(xls文件)中读取内容并将其内容显示到JTable中。在eclipse中一切正常,但是当我创建jar文件并尝试运行它时,出现以下问题:
java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
我发现奇怪的是,问题出在行上,当在行之前调用Workbook和Sheet时,它没有任何麻烦(至少从我的观察中可以看出)。
我已经研究了很多,主要似乎是jar文件不在Class-Path中,但是打开jar和清单文件后,我可以看到所有jar。
Class-Path: poi-ooxml-4.0.1.jar poi-4.0.1.jar commons-codec-1.11.jar commons-collections4-4.2.jar commons-math3-3.6.1.jar commons-compress-1.18.jar curvesapi-1.05.jar poi-ooxml-schemas-4.0.1.jar xmlbeans-3.0.2.jar
这是我的pom.xml文件中的内容:
<build>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>./</classpathPrefix>
<mainClass>com.clientdb.classes.DynamicRegForm</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
我也尝试下载jar文件并将其添加到项目中,而不是将依赖项添加到pom文件中,并且仍然是相同的错误。有任何想法吗?
可能仅在运行jar时才得到此信息, 因为依赖项不可用/未打包在其中 。
尝试生成一个 “ fat jar” (也称为 uber-jar ),它将所有依赖项打包到jar中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>YOUR_JAR_FINAL_NAME</finalName>
</configuration>
</plugin>
</plugins>
</build>
有关的文档maven-shade-plugin
可在此处找到
更新: 由于您正在使用可运行的jar文件,因此您可以按照与 可执行Jar
相关的文档的本节进行操作 __
我正在使用ApachePOI读取一些Excel文件。我创建了一个控制台应用程序来完成这项工作,之后我尝试将代码集成到SpringMVCwebapp中(我知道没什么特别的)。我已将相同的Jar文件包含到我的类路径中,但每当我尝试运行代码时,都会出现以下错误: 我相信类Font是在编译时找到的,但不是在运行时。我很确定问题不在于ClassPath,但是我不知道如何解决这个问题。 编辑:当我用main方
我制作了一个小应用程序,它从excel(xls文件)读取内容并将内容显示到JTable。eclipse中的一切都很好,但是当我创建jar文件并尝试运行它时,我遇到了以下问题: 我发现的奇怪的事情是,问题是行,当工作簿和工作表被称为行之前,并没有给任何麻烦(至少从我可以看到)。 我已经研究了很多,主要似乎是jar文件不在类路径中,但是打开jar和清单文件,我可以看到所有的jar都存在。 这就是我的p
我使用maven来管理我的web项目依赖关系。我添加apache poi依赖到我的pom文件.它不显示错误时,符合.但当它运行,它将抛出运行时间异常在我的Main Application()类.而它给java.lang.NoClassDefFoundError: org/apache/poi/ss/userModel/Workbook 我有一门主要的应用课程。 } 下面是我的补充
我正在运行一个shell脚本,它调用一个java类从数据库中获取一些数据,并用这些数据创建一个excel报表。当代码在我的java类中遇到下面一行时,我在线程“main”Java . lang . noclassdeffounderror:org/Apache/poi/ss/user model/Workbook中得到错误异常: 以下是我定义类路径的方式: 我验证了jar已经被下载(通过gradl
嗨,我知道这个问题已经被问了很多次了,但是我已经尝试了所有建议的问题! 我的代码在Eclipse中运行得非常好,但是我想在Unix中构建jar并通过命令行运行。 在我的依赖ivy.xml我列出了我的依赖: 但是当我执行我的jar时,我得到了以下错误: 线程“main”java中出现异常。lang.NoClassDefFoundError:org/apache/poi/ss/usermodel/Ro