odt-Datei erzeugen

Status
Nicht offen für weitere Antworten.

manuche

Bekanntes Mitglied
Hallo,

ich möchte aus meinem Code heraus eine odt-Datei für OpenOffice erzeugen. Beim Recherchieren bin ich über die Lib ODFDOM (ehemals ODF4j) von OpenOffice selbst gestolpert.
Hörte sich ganz gut an und die Beispiele sahen auch recht trivial aus! Allerdings bekomme ich direkt am Anfang beim Ausführen des Codes eine Exception um die Ohren geworfen!
Coder verkürzt:
Code:
try {
    File f = new File ("C:\\test.odt");
    OdfDocument odfDoc = OdfDocument.loadDocument(f);
    OdfFileDom odfContent = odfDoc.getContentDom();
    XPath xpath = XPathFactory.newInstance().newXPath();
    xpath.setNamespaceContext(new OdfNamespace());
}catch (Exception e) {
    e.printStackTrace();
}
Zeile 17 entspricht hier: OdfDocument odfDoc = OdfDocument.loadDocument(f);


Und hier die Exception:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xerces/dom/DocumentImpl
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at sdvv.<init>(sdvv.java:17)
at sdvv.main(sdvv.java:27)
Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.DocumentImpl
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 14 more
Das die Klasse nicht gefunden wird ist mir klar allerdings kann ich nicht nachvollziehen wo die Klasse herkommt. Musste nichts der gleichen importieren oder sonstiges! Kompilieren ging auch ohne Fehlermeldung 😉
Weiss jemand von euch was da zu tun ist oder hat evtl sogar eine bessere Lösung?

Gruß manuche
 
Für komplexere Dinge kannst du die Datei auch von Java aus auch direkt mit OpenOffice erstellen. Dafür gibt es UNO und den handlichen UNO Wrapper NOA
 
Das wäre dann eher OpenOffice steuern als nur eine Datei erzeugen oder? Würde zur Not auch gehen!
Schau ich mir mal an! Mal wieder ein Dankeschön Wildcard 😉
 
Das wäre dann eher OpenOffice steuern als nur eine Datei erzeugen oder? Würde zur Not auch gehen!
Schau ich mir mal an! Mal wieder ein Dankeschön Wildcard 😉
Ja, damit steuert man OpenOffice. Allerdings kann man OpenOffice auch Headless, also ohne grafische Oberfläche betreiben und hat über NOA/UNO den vollen Funktionsumfang der Suite zur Verfügung. Einfache Dinge erledigst du besser mit dem ODF Toolkit, weil du dafür kein OpenOffice brauchst, aber wenn du alle Möglichkeiten von OOo ausschöpfen willst/musst, (TOC, Indizies, Variablen, Charts, ...) dann über NOA/UNO.
 
Leider will ODF nicht in einer RCP Umgebung... Frag mich nicht wieso, mit "normalen" Java hat es funktioniert, dann hab ich es in mein Plugin implementiert und aus war das Spiel!
Wenn ich also eh schon mit Extensions arbeite warum dann also nicht NOA?
 
Das stimmt so nicht, da ich OpenOffice sehr erfolgreich in RCP einsetze, sowohl embedded, als auch Headless. Wie du vielleicht gesehen hast, wird auf der NOA seite auch NOA4e angeboten um OpenOffice direkt in Eclipse als Editor zu embedden, es funktioniert also definitiv.
Genauere Fehlerbeschreibung wäre also hilfreich...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben