如何修复java Apache POI项目中的NoClassDefFoundError?

时间:2018-03-07 11:35:24

标签: java apache-poi

我一直在努力修复NoClassDefFoundError异常但没有成功。现在变得有点沮丧。我正在创建一个使用Apache POI库读取excel文件的应用程序。这就是我在做的事情:

  1. 下载库的二进制发行版并将其保存在名为Apache POI库的桌面文件夹中

  2. 从zip文件夹中提取文件

  3. 我在Netbeans上创建了一个新项目并称之为apachePOI

  4. 在我的项目的Netbeans的项目导航选项卡上,我转到右键单击库>添加jar / Folder ..并从下载的库中导入所有.jar文件。共添加了11个.jar文件

  5. 我去了USER环境变量,并选择添加一个名为classpath的新环境变量。在变量值上,我添加了库中每个11.jar文件的路径。一条这样的路径是C:\Users\wks\Desktop\Apache POI Library\poi-bin-3.17-20170915\poi-3.17。我用分号

  6. 分隔路径
  7. 此后,我创建了一个非常简单的TestClass类,它编译得很好,但是没有运行错误NoClassDefFoundError。我的类中的代码除了声明像XSSFWorkbook workbook = new XSSFWorkbook(file)这样的XSSFWorkbook之外什么也没做。

  8. 我没有使用maven并且选择不使用。无法弄清楚我做错了什么,虽然我怀疑我错误地将我的库添加到类路径中,如上面的步骤(5)所示

1 个答案:

答案 0 :(得分:2)

大多数情况下,当缺少某些依赖项时会发生此错误。我看到你正在尝试使用XSSFWorkbook但是根据Apache网站,这个组件需要额外的依赖poi-ooxml。您还应添加xmlbeans-2.3.0.jar

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>2.3.0</version>
</dependency>

您可以在此link下找到所有必需依赖项的列表。

在我看来,你应该开始使用Maven,即使是一个简单的程序。这是非常有用的工具,也是大项目所必需的。