【问题标题】:java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Rowjava.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
【发布时间】:2019-05-27 13:32:59
【问题描述】:

我制作了一个小型应用程序,它从 excel(xls 文件)中读取内容并将内容显示到 JTable。在 Eclipse 中一切正常,但是当我创建 jar 文件并尝试运行它时,出现以下问题:

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row

我发现奇怪的是,问题出在行上,当工作簿和工作表在行之前被调用并且没有带来任何麻烦(至少从我所见)。

我研究了很多,似乎主要是 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 文件中,但仍然是同样的错误。 有什么想法吗?

【问题讨论】:

    标签: java swing maven apache-poi pom.xml


    【解决方案1】:

    可能只有在运行 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相关的文档可以是found in here

    更新:由于您使用的是可运行的 jar 文件,因此您可以关注与 Executable Jars 相关的this section of the documentation

    【讨论】:

    • 效果很好!非常感谢,新年快乐!
    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2011-09-21
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多