我制作了一个小型应用程序,它从 excel(xls 文件)中读取数据并将内容显示到 JTable 中。 Eclipse 中一切正常,但是当我创建 jar 文件并尝试运行它时,出现以下问题:
java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
我发现奇怪的事情是,问题出在行上,当工作簿和工作表在行之前被调用时,不会造成任何麻烦(至少从我所看到的)。
我进行了很多研究,主要似乎是 jar 文件不在类路径中,但打开 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 时你才会得到这个因为依赖项不可用/打包在其中.
尝试生成一个“胖罐子”(也称为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
can be 在这里找到
UPDATE:由于您使用的是可运行的 jar 文件,因此您可以按照文档的这一部分相关可执行罐子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)