Wenn Sie eine .xlsx-Datei mit einem Apache-POI öffnen, wird NoClassDefFoundError InvalidFormatException angezeigt

Ich habe Probleme, den Import aller erforderlichen .jar-Dateien zum korrekten Funktionieren zu bringen. Mein Endziel ist es, einfach eine Excel-Tabelle (genauer gesagt XLSX-Dateien) einzulesen, um zu überprüfen, ob die Geschwindigkeit des Apache-POI für zukünftige Anwendungen funktioniert.

Meine Frage ist, warum bekomme ich den Fehler geworfen ...

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

... wenn ich in der Klasse InvalidFormatException unter / org / apache / poi / openxml4j / exceptions / in der Datei poi-ooxml-3.9-20121203.jar sehen kann?

Ich habe eine Weile nicht mehr in Java programmiert und hoffe auf meine eigene Vernunft, dass ich einen dummen Fehler gemacht habe. Mein Code scheint korrekt zu kompilieren, aber ich habe die obige Fehlermeldung, wenn ich versuche, das Programm auszuführen. Ich habe einige Nachforschungen zu meinem Problem angestellt, konnte jedoch niemanden in meiner Situation finden. Normalerweise vergessen sie einfach die erforderliche .jar-Datei bzw. haben sie keine .jar-Datei. Vielleicht bin ich im selben Boot, aber hoffentlich kannst du es mir sagen.

Ich werde eine Aufschlüsselung meiner Logik geben. Hier ist der Code 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', die zum Kompilieren und Ausführen des Java-Codes verwendet wird:

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

Hier ist die Verzeichnisliste des obigen Klassenpfads:

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 '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 benutze:
Betriebssystem: Lubuntu 12.10 x 86

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage