NoClassDefFoundError: org/apache/poi/ss/usermodel/Arbeitsmappe
Mir läuft ein shell-Skript, das ruft eine java-Klasse, um einige Daten aus der Datenbank und erstellen Sie einen excel-Bericht mit, dass die Daten. Bekomme ich die Fehlermeldung Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Arbeitsmappe, wenn der code trifft die folgende Zeile in meine java-Klasse:
XSSFWorkbook workbook = new XSSFWorkbook ();
Dies ist, wie ich definiert habe, die der classpath:
CLASSPATH=${CLASSPATH}:<path-to-jars>/poi-2.5.1-final-20040804.jar
CLASSPATH=${CLASSPATH}:<path-to-jars>/poi-ooxml-3.11.jar
Ich habe überprüft, dass die Gläser wurden heruntergeladen(über gradle), so versuchen zu verstehen, was vermisse ich hier. Kann mir bitte jemand helfen mit diesem?
Stacktrace:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook
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.test.ExcelReportGenerator.writeExcel(ExcelReportGenerator.java:26)
at com.test.ReportRunner.createReport(ReportRunner.java:109)
at com.test.ReportRunner.main(ReportRunner.java:93)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook
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)
... 15 more
Warum nutzen Sie nicht Gradle zum erstellen einer ausführbaren JAR-Datei? Ich glaube nicht, dass das shell-Skript ist, müssen Sie Ihre classpath
InformationsquelleAutor user1318369 | 2016-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als pro das Apache-POI-FAQ-Eintrag -, Misch-POI-Gläser zwischen den verschiedenen Versionen wird nicht unterstützt und brechen in alle möglichen Arten, wie die, die Sie gefunden haben. Tun Sie es nicht!
Benötigen Sie Ihre POI-Gläser, alle von der gleichen Version. Ich würde vorschlagen, die neueste version ist hier zu finden. (aktuell 3.15)
Sollten Sie vielleicht überprüfen Sie auch die Komponenten und Ihre Abhängigkeiten Seite, um sicherzustellen, Sie haben alle erforderlichen Gläser für Ihre Nutzung von Apache POI. Naja, oder verwenden Sie ein dependency-management-tool wie Maven oder Gradle zu handhaben, dass für Sie!
InformationsquelleAutor Gagravarr
Ich heruntergeladen habe die neueste Apache-POI-Binärdateien v3.17 hier und es hat alle benötigten jars zu erstellen xlsx-Datei und öffnen Sie ohne viel Aufhebens.
Erforderlich-Gläser werden angezeigt, im unten screenshots (siehe ausgewählte Gläser) FYR.
InformationsquelleAutor mannedear
poi 2.5.1 hatte keine solchen-Paket (und damit auch von einer Klasse) im Lieferumfang enthalten (können Sie überprüfen, indem Sie das Auspacken der jar-Dateien im wesentlichen zip-Archive). Finden Sie die Quelle.
Update der poi-Abhängigkeit zu release 3. Dies hat auch den zusätzlichen Vorteil der Zuordnung der ooxml-version.
InformationsquelleAutor Ivan