2016-01-22 127 views
0

我是java的初學者,我不知道爲什麼我得到這個錯誤。
我使用Excel 2007中線程「main」中的異常java.lang.NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     at com.ExcelRead.SimpleExcelWriterExample.main(SimpleExcelWriterExample.java:15) 
    Caused by: java.lang.ClassNotFoundException: org.apache.poi.UnsupportedFileFormatException 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     ... 13 more 

這裏是我的代碼:

package com.ExcelRead; 

    import java.io.FileOutputStream; 
    import java.io.IOException; 

    import org.apache.poi.ss.usermodel.Cell; 
    import org.apache.poi.ss.usermodel.Row; 
    import org.apache.poi.xssf.usermodel.XSSFSheet; 
    import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

    public class SimpleExcelWriterExample { 


     public static void main(String[] args) throws IOException { 
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet sheet = workbook.createSheet("Java Books"); 

      Object[][] bookData = { 
        {"Head First Java", "Kathy Serria", 79}, 
        {"Effective Java", "Joshua Bloch", 36}, 
        {"Clean Code", "Robert martin", 42}, 
        {"Thinking in Java", "Bruce Eckel", 35}, 
      }; 

      System.out.println("array created"); 
      int rowCount = 0; 

      for (Object[] aBook : bookData) { 
       Row row = sheet.createRow(++rowCount); 

       int columnCount = 0; 

       for (Object field : aBook) { 
        Cell cell = row.createCell(++columnCount); 
        if (field instanceof String) { 
         cell.setCellValue((String) field); 
        } else if (field instanceof Integer) { 
         cell.setCellValue((Integer) field); 
        } 
       } 

      } 
      System.out.println("inserted in bookData."); 


      try (FileOutputStream outputStream = new FileOutputStream("JavaBooks.xlsx")) { 

       System.out.println("JavaBooks................"); 
       workbook.write(outputStream); 
      } 
     } 

    } 



    ________________________________________________________________________________ 

我還添加POI的罐子,也構建路徑,這是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>com</groupId> 
     <artifactId>ExcelRead</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <packaging>jar</packaging> 

     <name>ExcelRead</name> 
     <url>http://maven.apache.org</url> 

     <properties> 
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     </properties> 

     <dependencies> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>3.8.1</version> 
       <scope>test</scope> 
      </dependency> 

      <dependency> 
       <groupId>org.apache.poi</groupId> 
       <artifactId>poi</artifactId> 
       <version>3.7</version> 
      </dependency> 


      <dependency> 
       <groupId>org.apache.poi</groupId> 
       <artifactId>poi-ooxml</artifactId> 
       <version>3.13</version> 
      </dependency> 


      <dependency> 
       <groupId>stax</groupId> 
       <artifactId>stax-api</artifactId> 
       <version>1.0</version> 
      </dependency> 


     </dependencies> 
    </project> 

有人可以幫我解決這個問題。我搜索了關於這個錯誤 我發現的原因是缺少罐子但我已經檢查過,罐子已經成功下載。

+0

請格式化你的問題,正確的代碼,所以它是我們更容易閱讀:) – James

+2

爲什麼要使用兩種不同版本的POI(3.7和3.13)的?更好地匹配它們。 – Thilo

+0

我已經匹配POI的版本,它的工作...謝謝你@Thilo – Himanshi

回答

0

您正在使用不同版本的POI部分。你應該讓它們匹配。

 <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-ooxml</artifactId> 
      <version>3.13</version> 
     </dependency> 
相關問題