# axis2 + jni = libXY.so already loaded in another classloader



## losty (19. Jul 2007)

Namnd...

verzweifel hier gerade über eigentlich recht einfachen Geschichte, bei der ich aus einem Axis2 Webservice eine Native Lib ansprechen will...

Einzeln klappt alles wunderbar, aber im Axis2 bekomme ich nurnoch folgendes quasi gleich nach dem deployen...



> Error: java.lang.UnsatisfiedLinkError: Native Library /path/to/libXY.so already loaded in another classloader at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1551)



Das Service-Objekt sieht in etwa so aus:


```
class Test {
  public native int doSometing();
  static {
    System.loadLibrary("XY");
  }
```
}

Auf der axis2-seite find ich nix bezüglich JNI... aber da muss es doch irgend ne Möglichkeit geben, oder?

Thnx & CU,
Losty


----------



## Murray (19. Jul 2007)

Jede Native-Library darf in einer VM nur von einem ClassLoader verwendet werden; das ist dann der ClassLoader, der die erste Klasse geladen hat, deren statische Initialisierung das Laden der Library veranlasst hat. Lädt man eine Klasse, die die Lib ebenfalls verwendet, über einen weiteren ClassLoader, so kommt es zu diesem Fehler.

Möglicherweise ist das nicht sao einfach zu beheben, falls man Axis2 nicht abgewöhnen kann, hier verschiedene ClassLoader zu benutzen.

Hast Du mehrere Services, die alle diese Library brauchen?


----------



## losty (19. Jul 2007)

Ja, aber das ist nicht das Problem. Habe Kopien angelegt und auch wenn ich die anderen abschalte gehts nicht.

Auf die ClassLoader-Geschichte bin ich auch schon gestossen. Nur ne Möglichkeit das zu beheben habe ich nicht finden können.
Mit Hibernate solls ähnlich Probleme geben.

Kein Axis2-Guru hier?

Thnx & CU LC!


----------

