ZUGFeRD / ZUV

ZUgferd validator using Verapdf, discontinued because integrated into Mustangproject 2.0
Apache License 2.0
27 stars 5 forks source link

Schema kann nicht als Resource geladen werden. #36

Open Cakmakli-a opened 4 years ago

Cakmakli-a commented 4 years ago

In der Klasse "Validator" wird in der Methode versucht das Schema zu laden:

protected void validateSchema(byte[] xmlRawData, String schemaPath, int section, EPart part) throws IrrecoverableValidationError { URL schemaFile = ClassLoader.getSystemResource("schema/" + schemaPath); Was allerdings fehlschlägt und es kommt zu einer NullPointerException. Beim Debuggen kann man zwar feststellen, dass der Pfad zur Datei richtig ist, aber geladen wird die Resource doch nicht.

Festgestellt habe ich eher, dass mit der Anweisung wie final InputStream is = getClass().getResourceAsStream(resourceFile); ich Resourcen geladen bekomme. Warum ClassLoader.getSystemResource das Laden einer Resource nicht bewerkstelligt bekommt, ist mir noch ein "Rätsel".

Setze ZUV 0.9.0 ein.

jstaerk commented 4 years ago

komisch bei mir meldet mvn package keine Fehler. ZUV wird Teil von Mustangproject ggf bitte mal die alphaversion von Mustang clonen und bauen. Das geht dann ungefähr mit java -jar Mustang-CLI-...jar --action validate --source xyz und validiert unter anderem auch auf Xrechnungs-Attribute.

Cakmakli-a commented 4 years ago

Die "ZUV-0.9.0.jar" habe ich heruntergeladen und in mein Maven-Projekt eingebunden. (pom.xml) Vorher habe ich Jar-Datei ich in mein (lokales) Maven-Repo installiert. mvn install:install-file -Dfile="Pfad zur Jar-Datei" -DgroupId=org.zugferd -DartifactId=ZUV -Dversion=0.9.0 -Dpackaging=jar

Auf die API greife ich direkt zu. Der Grund: programmatisch das Ergebnis der Validierung zu verabeiten statt auf eine XML zu "warten", die am Ende von java -jar ZUV-0.9.0.jar --action validate -f <filename of ZUGFeRD PDF.pdf> rauskommt. Der direkte Zugriff ermöglicht z.B. im Fehlerfall besser einzugreifen und direkt das Ergebnis der Validierung zu verarbeiten statt auf die Erzeugung einer XML zu warten, diese einzulesen, ...

jstaerk commented 4 years ago

In dem Zusammenhang würde ich entweder einen Classloader empfehlen oder besser noch die Validierungsbibliothek im Mustang 2 snapshot