2016-11-06 4 views
1

In meinem Projekt verwende ich apache.poi libs, um mit Excel-Dateien zu arbeiten. Ich habe Abhängigkeiten von:Die Klasse wurde nicht vom Abhängigkeits-Jar gefunden

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

Gläser. Also während der Kompilierung gibt es keine Probleme. On Laufzeit: richtig

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 

Linie 1 arbeitet, während die Linie 2 wirft Ausnahme:

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 in apache.poi_3.15 befindet sich aber während der Laufzeit Jvm versucht es in apache.poi.ooxml_3.15 zu finden. Nicht sicher warum?

Vielleicht kann mir jemand helfen, dieses Problem zu beheben.

Weitere Details zum Projekt: - Ide: eclipse neon.1 | - es ist e4 Projekt - Java 8

Antwort

0

Die Bibliothek hat wahrscheinlich andere Laufzeit depedencies, die für die zweiten Fall benötigt werden. Können Sie versuchen, das Projekt als Maven-Projekt einzurichten? Es sollte Ihr Problem lösen, da maven auch auf Abhängigkeiten Ihrer explizit definierten Bibliotheken achtet.

2

Da XSSFWorkbook auf OOXML-Schema funktioniert, lädt es die Workbook-Klasse von poi.ooxml jar. Möglicherweise erhalten Sie diesen Fehler, weil xmlbeams jar auch als Abhängigkeit in der Laufzeit benötigt wird.

aktualisieren

commons-logging, commons-codec, commons-collections werden log4j Gläser auch für poi erforderlich. Bitte überprüfen Sie, ob Sie sie importiert haben. Alle diese jars sind bereits in poi-bin-3.15-20160924 Datei, die Sie möglicherweise heruntergeladen haben. Die Voraussetzungen für verschiedene Komponenten finden Sie unter this page.

Hoffe das hilft !!

+0

hinzugefügt beide Gläser, aber immer noch Ausnahme – Bublik

+0

@Bublik Bitte überprüfen Sie das Update. Überprüfen Sie auch die Reihenfolge der importierten Gläser 'poi' ->' poi.ooxml' -> 'poi.ooxml_schemas', wenn dies einen Unterschied macht. –

Verwandte Themen