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
Star Trek Anti-Pattern
vor 8 Jahren
1 Kommentar:
I would like to exchange links with your site taeglich-java.blogspot.com
Is this possible?
Kommentar veröffentlichen