CSV to ZugFerD Example bricht mit: io.konik.carriage.itext.ITextInvoiceAppender.getPriority()I ab

142 views
Skip to first unread message

Steffen Winkelbauer

unread,
Feb 23, 2018, 8:20:51 PM2/23/18
to Konik ZUGFeRD Library
Hallo zusammen,
ich versuche gerade das CSV Beispiel nachzubasteln und es hackt leider irgendwo.
Ich habe alle Dependecies heruntergeladen (teils neuere Versionen, das könnte natürlich auch das Problem bereiten):
~/konik-csv $ ls -o lib
-rw-rw-r-- 1 steffen  102309 Apr 10  2017 bval-core-1.1.2.jar
-rw-rw-r-- 1 steffen  397858 Apr 10  2017 bval-jsr-1.1.2.jar
-rw-rw-r-- 1 steffen  246174 Sep 21  2016 commons-beanutils-1.9.3.jar
-rw-r--r-- 1 steffen  214788 Okt 15 12:00 commons-io-2.6.jar
-rw-r--r-- 1 steffen  499634 Nov  4 12:15 commons-lang3-3.7.jar
-rw-rw-r-- 1 steffen   61829 Apr 13  2015 commons-logging-1.2.jar
-rw-rw-r-- 1 steffen  249003 Dez 19  2012 dozer-5.4.0.jar
-rw-rw-r-- 1 steffen 1477253 Aug 17  2016 fontbox-2.0.2.jar
-rw-rw-r-- 1 steffen 2256213 Feb 24 01:18 guava-18.0.jar
-rw-rw-r-- 1 steffen    6071 Jan 12  2016 harness-1.0.0.jar
-rw-rw-r-- 1 steffen   18470 Sep 16  2014 itext-carriage-0.8.0.jar
-rw-rw-r-- 1 steffen 2139257 Aug 18  2014 itextpdf-5.5.2.jar
-rw-rw-r-- 1 steffen   61016 Aug 18  2014 itext-pdfa-5.5.2.jar
-rw-rw-r-- 1 steffen  377807 Jun 14  2017 konik-1.2.10.jar
-rw-rw-r-- 1 steffen  489883 Feb 24 00:48 log4j-1.2.17.jar
-rw-rw-r-- 1 steffen  340129 Apr 10  2017 nv-i18n-1.22.jar
-rw-rw-r-- 1 steffen 2419801 Aug 17  2016 pdfbox-2.0.2.jar
-rw-rw-r-- 1 steffen   30544 Sep 13  2016 pdfbox-carriage-1.0.2.jar
-rw-r--r-- 1 steffen   41203 Mär 16  2017 slf4j-api-1.7.25.jar
-rw-r--r-- 1 steffen   12244 Mär 16  2017 slf4j-log4j12-1.7.25.jar
-rw-r--r-- 1 steffen   98092 Okt 29  2015 super-csv-2.4.0.jar
-rw-r--r-- 1 steffen   11157 Okt 29  2015 super-csv-dozer-2.4.0.jar
-rw-rw-r-- 1 steffen   63777 Mär  1  2014 validation-api-1.1.0.Final.jar
-rw-rw-r-- 1 steffen  132087 Aug 17  2016 xmpbox-2.0.2.jar

Aber beim Ausführen der Beispiel-Kommandozeile erscheint folgender Fehler:

~/konik-csv $ java -cp "`pwd`/lib/*" -Dlog4j.configuration="file:`pwd`/log4j.properties" -DinputPath="`pwd`/input" -DoutputPath="`pwd`/output" io.konik.csv.pdf.CsvToZUGFeRDConverter example.csv
2018-02-24 02:13:18 INFO  CsvToZUGFeRDConverter:128 - ----------------------------------------------------------
2018-02-24 02:13:18 INFO  CsvToZUGFeRDConverter:129 - CSV file:        /home/steffen/konik-csv/example.csv
2018-02-24 02:13:18 INFO  CsvToZUGFeRDConverter:130 - Input path:    /home/steffen/konik-csv/input
2018-02-24 02:13:18 INFO  CsvToZUGFeRDConverter:131 - Output path:    /home/steffen/konik-csv/output
2018-02-24 02:13:18 INFO  CsvToZUGFeRDConverter:132 - ----------------------------------------------------------
Exception in thread "main" java.lang.AbstractMethodError: io.konik.carriage.itext.ITextInvoiceAppender.getPriority()I
    at io.konik.csv.pdf.FileAppenderPriorityComparator.compare(FileAppenderPriorityComparator.java:49)
    at io.konik.csv.pdf.FileAppenderPriorityComparator.compare(FileAppenderPriorityComparator.java:15)
    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    at java.base/java.util.TimSort.sort(TimSort.java:220)
    at java.base/java.util.Arrays.sort(Arrays.java:1514)
    at java.base/java.util.ArrayList.sort(ArrayList.java:1587)
    at java.base/java.util.Collections.sort(Collections.java:175)
    at io.konik.PdfHandler.<init>(PdfHandler.java:81)
    at io.konik.csv.pdf.CsvToZUGFeRDConverter.<init>(CsvToZUGFeRDConverter.java:24)
    at io.konik.csv.pdf.CsvToZUGFeRDConverter.main(CsvToZUGFeRDConverter.java:134)

Ich nutze Java 9
~/konik-csv $ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

Der gleiche Fehler ist bei Curma hier: https://groups.google.com/forum/#!topic/konik-io/QFzS66ewwnk aufgetreten. Er hat alle Bibliotheken manuelle nochmals in sein Projekt eingebunden.
Komm ich irgendwie um die manuelle Einbindung herum und kriege das Beispiel so zum laufen? (ich bin kein Java-Programmierer)
Die Pdfs sind Pdf/A.

Danke im Voraus
Grüße
Steffen

Vadim

unread,
Feb 28, 2018, 3:00:56 AM2/28/18
to Konik ZUGFeRD Library
Hallo Steffen, 

iText ist nicht mehr so up to date und der Fehler ist in der iText carriage, kannst du das ganze mal mit PDFBox probieren, damit sollte es gehen.

Steffen Winkelbauer

unread,
Mar 1, 2018, 4:20:13 PM3/1/18
to Konik ZUGFeRD Library
Ist gelöst, aber der Weg war lang:
Dein Tip hat nicht ganz geholfen: Ich habe alle itext* packet aus dem lib Verzeichnis entfernt und habe dann leider diese Fehler erhalten.
2018-03-01 21:45:05 INFO  CsvToZUGFeRDConverter:128 - ----------------------------------------------------------
2018-03-01 21:45:05 INFO  CsvToZUGFeRDConverter:129 - CSV file:        /home/steffen/konik-csv/example.csv
2018-03-01 21:45:05 INFO  CsvToZUGFeRDConverter:130 - Input path:    /home/steffen/konik-csv/input
2018-03-01 21:45:05 INFO  CsvToZUGFeRDConverter:131 - Output path:    /home/steffen/konik-csv/output
2018-03-01 21:45:05 INFO  CsvToZUGFeRDConverter:132 - ----------------------------------------------------------
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at io
.konik.PdfHandler.<init>(PdfHandler.java:85)

    at io
.konik.csv.pdf.CsvToZUGFeRDConverter.<init>(CsvToZUGFeRDConverter.java:24)
    at io
.konik.csv.pdf.CsvToZUGFeRDConverter.main(CsvToZUGFeRDConverter.java:134)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
    at java
.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java
.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java
.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
   
... 3 more

Aber da das Projekt schon etwas gealtert ist habe ich dann doch den Umstand auf mich genommen und Java 7 heruntergeladen und siehe da mit Java 7 funktioniert das Beispiel. Es scheinen also irgendwelche Sicherheitsmechanismen in Java 8 und Java 9 dazwischenzufunken.
Da ich das ganze auf einem Server umsetzen möchte, kann ich mit einem lokalen Java 7 Ordner leben.
Danke für deine Anstrengungen!
Grüße
Steffen

Vadim

unread,
Mar 1, 2018, 4:28:21 PM3/1/18
to Konik ZUGFeRD Library
Danke für die Rückmeldung, das Ganze sollte ohne weiteres auch auf Java8/9 laufen. Es ist sogar auf 8/9 im Einsatz. 

Hast du die Richtigen bindings. Arbeitest du mit Maven/Gradle?

Hier gibt es noch etwas Hintergrundinformationen zum Thema.

Steffen Winkelbauer

unread,
Mar 1, 2018, 4:53:55 PM3/1/18
to Konik ZUGFeRD Library
Wie gesagt, ich bin kein Javaprogrammierer sondern habe nur das Beispiel (https://konik.io/docs/index.html#convert_pdf_file_to_zugferd_compliant_invoice) versucht auszuführen (CSV to Pdf). Ich bin nur der Skripte-Sysadmin ;) . Ich habe Javaprogrammierer bei mir im Haus mit denen ich mit konik nochmal genauer ansehen werde, bin aber erstmal froh, dass das Beispiel erfolgreich läuft und konik also ein super Kandidat für unsere Zugferd-Rechnungen.
DANKE! für den Stackoverflow Beitrag! "--add-modules java.xml.bind" ist der Zauberparameter.
Der ganze Befehl für das Beispiel lautet also für Java 9:
java -cp "`pwd`/lib/*" --add-modules java.xml.bind -Dlog4j.configuration="file:`pwd`/log4j.properties" -DinputPath="`pwd`/input" -DoutputPath="`pwd`/output" io.konik.csv.pdf.CsvToZUGFeRDConverter example.csv
(nur falls jemand mal vor dem gleichen Problem steht)

Reply all
Reply to author
Forward
0 new messages