2016-11-06 76 views
1

在我的項目中,我使用apache.poi庫來處理excel文件。我有依賴關係:從依賴關係jar中找不到的類

  • apache.poi.ooxml_3.15
  • apache.poi_3.15
  • apache.poi.ooxml_schemas_3.15

罐子。所以編譯期間沒有問題。 在運行時:

import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
    import org.apache.poi.ss.usermodel.Workbook; 
    import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
    ... 
    Workbook workbook2003 = new HSSFWorkbook(); //1 
    Workbook workbook2007 = new XSSFWorkbook(); //2 

1號線運行正常,而2號線拋出異常:

Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook cannot be found by org.apache.poi.ooxml_3.15.0 
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461) 
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372) 
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364) 
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 41 more 

org.apache.poi.ss.usermodel.Workbook位於apache.poi_3.15,但運行的JVM中試圖找到它在apache.poi.ooxml_3.15。不知道爲什麼?

也許有人可以幫助我解決這個問題。

更多關於這個項目的細節: - Ide:eclipse neon.1 | - 這是e4項目 - java 8

回答

0

該庫可能有其他運行時依賴需要第二種情況。你可以嘗試將項目設置爲maven項目嗎?它應該可以解決你的問題,因爲maven也會照顧你明確定義的庫的依賴關係。

2

由於XSSFWorkbook適用於OOXML架構,因此它會從poi.ooxml jar中加載Workbook類。您可能會收到此錯誤,因爲xmlbeams jar也是運行時所需的依賴項。

更新

commons-loggingcommons-codeccommons-collections,也需要poilog4j罐子。請檢查您是否已經導入它們。所有這些jars已經在您可能已經下載的poi-bin-3.15-20160924文件中。請參閱this page瞭解各種組件的先決條件。

希望這有助於!

+0

添加了兩個罐子,但仍然得到exeption – Bublik

+0

@Bublik請檢查更新。同時檢查導入的罐子'poi' - >'poi.ooxml' - >'poi.ooxml_schemas'的順序,如果這有什麼區別的話。 –