Donnerstag, 28. Juni 2007

Openoffice via Java-Uno anbinden II - Noch mehr ClassLoader-Probleme

Hallo Leute!

Als Fortsetzung zum Eintrag "Openoffice via Java-Uno anbinden" habe ich inzwischen neue schmerzliche Erfahrungen mit UNO sammeln müssen.

Nachdem die Anbindung zwar funktioniert hat, stellte sich heraus, dass die Anbindung in einer Tomcat-Applikation nicht stabil läuft. Häufig tritt folgender Fehler auf:

java.lang.IllegalAccessError: tried to access field com.sun.star.lib.util.WeakMap$Entry.key from class com.sun.star.lib.util.WeakMap

WeakMap.cleanUp:at com.sun.star.lib.util.WeakMap.cleanUp(WeakMap.java
WeakMap.put:at com.sun.star.lib.util.WeakMap.put(WeakMap.java
UnoRuntime.getEnvironment:at com.sun.star.uno.UnoRuntime.getEnvironment(UnoRuntime.java
UnoRuntime.getBridgeByName:at com.sun.star.uno.UnoRuntime.getBridgeByName(UnoRuntime.java
BridgeFactory.createBridge:at com.sun.star.comp.bridgefactory.BridgeFactory.createBridge(BridgeFactory.java
UrlResolver$_UrlResolver.resolve:at com.sun.star.comp.urlresolver.UrlResolver$_UrlResolver.resolve(UrlResolver.java
BootstrapUtils.bootstrap:169

Nach einiger Recherche im Internet fand ich die Lösung hier:

http://www.nabble.com/-udk-dev--IllegalAccessError-in-WeakMap-tf2672247.html#a7451826

Das Problem ist also, daß die UNO-Klassen mit verschiedenen Classloadern geladen werden. Jetzt wurde es mir auch klar: unsere Bootstrap-Utils haben einen Classloader gebaut, um das Problem mit den Native-Libraries zu lösen und ausserdem gibt es die Jarfiles nochmal im lib-Verzeichnis der Webapplikation.

Leider kann man nicht einfach Jarfiles mittels Bootstrap-Utils laden, weil dann die Normale Webapplikation die Klassen nicht kennt.

Im Moment kenne ich nur eine Lösung, man muß den CLASSPATH auf das OpenOffice-Verzeichnis setzen und Tomcat so starten (catalina.sh ändern), daß dieser CLASSPATH benutzt wird (ich arbeite im Moment mit Tomcat 4.1 - evtl. gibt es in Tomcat 5 eine bessere Lösung?).

Tja so sieht es aus. Jedwede dynamische Lösung ist damit vom Tisch. Schaun' wir mal, vielleicht ergibt sich in den nächsten Tagen noch was besseres.

Ciao
larsfrommars

1 Kommentar:

Anonym hat gesagt…

I would like to exchange links with your site taeglich-java.blogspot.com
Is this possible?