JNI-FindClass-Funktion gibt null zurück

8

Ich habe eine einfache Java-Klasse ("MainX"), die ich mit einem Shell-Skript und Eclipse kompiliere. Wenn ich die Funktion env- & gt; FindClass ("MainX") aufruft, gibt die aus dem Skript generierte MainX.class-Datei null zurück, während die von eclipse erzeugte MainX.class-Datei die Klasse zurückgibt und danach die runMainX-Funktion ausführt.

Die generierte MainX.class-Datei befindet sich im selben Ordner wie die ausführbare JNI-C ++ - Datei.

MainX.java

%Vor%

JNIBinding.cpp

%Vor%

Könnte mir jemand erklären, warum das passiert?

Ich schätze jede Hilfe.

Irgendeine Idee ??? Vielen Dank im Voraus

    
STiGMa 01.10.2013, 10:21
quelle

3 Antworten

17

Aus der JNI-Dokumentation für FindClass :

%Vor%

Wenn Sie also davon ausgehen, dass die Klasse im Paket your.package.name enthalten ist, müssen Sie vermutlich

ersetzen %Vor%

mit

%Vor%

Hoffe, das hilft!

    
mbrenon 01.10.2013, 12:37
quelle
13

Ich bin mir nicht sicher über dieses Problem auf Ihrer Plattform, aber ich hatte ein ähnliches Problem auf der Android-Plattform.

Die FindClass-Methode sollte nur vom Java-Thread aufgerufen werden. Die FindClass-Implementierung sucht nach einem ClassLoader, indem sie den aktuellen Call-Stack durchläuft. Da Sie versuchen, die FindClass von einem nativen Thread aus aufzurufen, müssen Sie nicht nach ClassLoader suchen. Werfen Sie einen Blick auf diese JNI-FAQ :

  

Wenn der Klassenname richtig aussieht, könnten Sie in eine Klasse geraten   Ladeproblem. FindClass möchte die Klassensuche in der Klasse starten   Loader mit Ihrem Code verbunden. Es untersucht den Call-Stack, der   sieht etwa so aus:

%Vor%
  

Die oberste Methode ist Foo.myfunc. FindClass findet den ClassLoader   Objekt, das mit der Foo-Klasse verknüpft ist und dieses verwendet.

    
Ivan Mushketyk 30.12.2013 16:21
quelle
0

Ich habe CentOS 6 x86_64 und es hat nicht funktioniert, bis ich diese Zeilen geändert habe:

%Vor%

Ich muss auch LD_LIBRARY_PATH exportieren:

%Vor%

Ich hoffe, es hilft!

    
oml 13.03.2014 07:46
quelle

Tags und Links