Eröffnung .xlsx-Datei mit Apache POI gibt NoClassDefFoundError InvalidFormatException

Ich habe Probleme dabei, den import aller erforderlich .jar-Dateien korrekt arbeiten.
Mein end-Ziel ist einfach zu Lesen in einer excel-Tabelle (genauer gesagt .xlsx-Dateien), um zu überprüfen, ob die Geschwindigkeit des Apache-POI-arbeiten für zukünftige Anwendungen.

Meine Frage ist, warum bin ich immer der Fehler geworfen...

 

java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/Ausnahmen/InvalidFormatException

 

...wenn ich sehen kann, in der Klasse InvalidFormatException at /org/apache/poi/openxml4j/Ausnahmen/im 'Datei poi-ooxml-3.9-20121203.jar'?

Ich bin noch nicht zum Programmieren in Java in eine Weile, und ich bin der Hoffnung, für meine eigene geistige Gesundheit, die ich gemacht habe einen dummen Fehler. Mein code scheint zu kompilieren korrekt, aber ich habe die obige Fehlermeldung, wenn ich versuche das Programm auszuführen. Ich habe einige der Forschung getan in meinem Thema aber noch nicht in der Lage gewesen, jemanden zu finden in meiner situation. Sie in der Regel nur vergessen/nicht eine erforderlich .jar-Datei. Vielleicht bin ich im gleichen Boot, aber hoffentlich werden Sie in der Lage, mir zu sagen.

Werde ich eine Aufschlüsselung meiner Logik. Hier ist der code, der in TestExcel.java

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 

import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

public class TestExcel 
{
    public static void main(String[] args) 
    { 
        InputStream inp; 
        try 
        { 
            inp = new FileInputStream("cost.xlsx"); 

            Workbook wb; 
            try { 
                wb = WorkbookFactory.create(inp); 
            } 
            catch (FileNotFoundException e) { 
                e.printStackTrace(); 
            } 
        } 
        catch (InvalidFormatException e) { 
            e.printStackTrace(); 
        } 
        catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
}

Hier ist die Datei "c_test" benutzt, um zu kompilieren und führen Sie den java-code:

javac -classpath "/home/robsco/Webdev/java/poi/*" TestExcel.java
java TestExcel

Hier ist die Auflistung im Verzeichnis des classpath oben:

robsco@roblaptop:~/Webdev/java/poi$ ls -al
total 26616
drwxrwxr-x 2 robsco robsco     4096 Aug 18 18:13 .
drwxrwxr-x 6 robsco robsco     4096 Aug 18 18:12 ..
-rwxr-xr-- 1 robsco robsco    52915 Sep 18  2009 commons-logging-1.1.jar
-rwxr-xr-- 1 robsco robsco   313898 Apr  5  2009 dom4j-1.6.1.jar
-rwxr-xr-- 1 robsco robsco   121070 Apr  5  2009 junit-3.8.1.jar
-rwxr-xr-- 1 robsco robsco   358180 Apr  5  2009 log4j-1.2.13.jar
-rwxrw-r-- 1 robsco robsco 14841622 Aug 18 13:15 ooxml-schemas-1.1.jar
-rwxr-xr-- 1 robsco robsco  1869113 Nov 26  2012 poi-3.9-20121203.jar
-rwxr-xr-- 1 robsco robsco    30446 Nov 26  2012 poi-excelant-3.9-20121203.jar
-rwxr-xr-- 1 robsco robsco   936648 Nov 26  2012 poi-ooxml-3.9-20121203.jar
-rwxr-xr-- 1 robsco robsco  4802621 Nov 26  2012 poi-ooxml-schemas-3.9-20121203.jar
-rwxr-xr-- 1 robsco robsco  1226511 Nov 26  2012 poi-scratchpad-3.9-20121203.jar
-rwxr-xr-- 1 robsco robsco  2666695 Apr  5  2009 xmlbeans-2.3.0.jar

und die Ausgabe von der Ausführung von "c_test':

robsco@roblaptop:~/Webdev/java$ ./c_test 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/exceptions/InvalidFormatException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
    at java.lang.Class.getMethod0(Class.java:2764)
    at java.lang.Class.getMethod(Class.java:1653)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions.InvalidFormatException
    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:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more

ich verwende:
OS: Lubuntu 12.10 x86

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)

robsco@roblaptop:~/Webdev/java/poi$ javac -version
javac 1.7.0_25
Könnte man vielleicht auch ältere POI-Gläser auf Ihrem classpath? Siehe diese POI FAQ-Eintrag how to check
Danke für die Antwort @Gagravarr. Ich habe versucht, den code auf das FAQ und Hinzugefügt einen import für die POIFSFileSystem und URL-Klassen und habe diesen Fehler zur Laufzeit: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/POIFSFileSystem at TestExcel.main(TestExcel.java:24) Es scheint seltsam, dass es nicht finden können, die Klasse, wenn ich gezielt importiert und die poi-jar auf mein classpath.
Ihre shell-Skript wird übergeben werden in einen Klassenpfad für das kompilieren (javac) Schritt, aber nicht ausführen (java -) Schritt, konnte es so einfach sein?
Das war es! Danke @Gagravarr. Ich fühle mich ein bisschen blöd jetzt über die Annahme der externen Gläser wurden irgendwie in Verbindung zur compile-Zeit. Fügen Sie Ihren Kommentar als eine Antwort und ich werde es akzeptieren. Ich musste das tun, als auch für andere Interessierte, um die externen Bibliotheken und meine Klasse verknüpft zur Laufzeit: stackoverflow.com/questions/7485670/...

InformationsquelleAutor robsco | 2013-08-18

Schreibe einen Kommentar