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

Status
Nicht offen für weitere Antworten.
L

losty

Gast
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:

Code:
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

Top Contributor
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?
 
L

losty

Gast
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!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben