2016-07-07 4 views
0

Ich verwende Krextor, um XML in RDF zu konvertieren. Es läuft gut über die Befehlszeile. Ich versuche, es von Java (Eclipse) mit diesem Code ausführen.Das Ausführen von XSLT zu RDF-Framework schlägt wegen Saxon fehl

private static void XMLToRDF() throws KrextorException, ValidityException, ParsingException, IOException, XSLException{ 

     Element root = new Element("person"); 
     Attribute friend = new Attribute("friends", "http://van-houten.name/milhouse"); 
     root.addAttribute(friend); 
     Element name = new Element("name"); 
     name.appendChild("Bart Simpson"); 
     root.appendChild(name); 
     nu.xom.Document inputDocument = new nu.xom.Document(root); 
     System.out.println(inputDocument.toXML()); 
     Element root1 = inputDocument.getRootElement(); 
     System.out.println(root1); 
     Krextor k = new Krextor(); 
     nu.xom.Document outputDocument = k.extract("socialnetwork","turtle",inputDocument); 
     System.out.println(outputDocument.toString()); 
    } 

Ich habe folgendes Problem Problem

Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/saxon/CollectionURIResolver 
Caused by: java.lang.ClassNotFoundException: net.sf.saxon.CollectionURIResolver 

I Saxon9he im Classpath enthalten sind, und ich habe auch manuell als Bibliothek im Projekt, aber der Fehler ist die gleiche hinzugefügt.

+0

Meine Vermutung wäre, dass Krextor eine Abhängigkeit von einer bestimmten Version von Saxon hat. Aber ich kann diese Informationen nicht leicht in ihrer Dokumentation finden. Die Klasse CollectionURIResolver war im Paket net.sf.saxon in Saxon 9.1, aber nach 9.3 war sie in net.sf.saxon.lib umgezogen. –

+0

Ich folgte Ihrer Empfehlung und ich manuell die Saxon9.jar und jetzt bekomme ich diesen Fehler: Ausnahme im Thread "Haupt" javax.xml.transform.TransformerFactoryConfigurationError: Provider net.sf.saxon.TransformerFactoryImpl konnte nicht instanziiert werden: java.lang .SecurityException: Die Unterzeichnerinformationen der Klasse "net.sf.saxon.TransformerFactoryImpl" stimmen nicht mit Unterzeichnerinformationen anderer Klassen im selben Paket überein. – Caleb

+1

Ich denke, Sie sollten die Entwickler von Krextor danach fragen. Vielleicht enthalten sie bereits eine Version von Saxon, in welchem ​​Fall das Setzen einer anderen Version von Saxon auf den Klassenpfad sehr wahrscheinlich Probleme verursachen wird. –

Antwort

0

Ich bin der Hauptentwickler von Krextor. Und, @ Michael Kay, eigentlich ein Kollege von Grangel, so werde ich das konkrete Problem mit ihm vor Ort lösen.

Also tatsächlich die letzte sächsische Version, mit der ich ernsthafte Tests gemacht habe, war 9.1; Danach habe ich Krextor nicht in Java integriert, sondern hauptsächlich Krextor von der Kommandozeile verwendet.

@Grangel, könnten Sie bitte ein Problem für Krextor einreichen, und dann können wir daran arbeiten, es zusammen zu beheben.

In der Tat, @ Michael Kay, hatte ich seit einiger Zeit neuere Saxon-Versionen mit Krextor und aktualisiert den Befehlszeilen-Wrapper, um sie zu verwenden (wie zum Hinzufügen verschiedener JARs zum Klassenpfad), aber ich habe nicht unbedingt aktualisiert der Java-Wrappercode.

Verwandte Themen