Javacpp: Probleme beim laden einer nativen Library

Hallo,

Ich benutze die Bibliothek javacpp, um auf eine (selbst programmierte), native Bibliothek
zuzugreifen. Damit das Ganze am Ende vollautomatisch funktioniert, habe ich mir in Eclipse einen neuen Builder im Java-Projekt eingestellt.
Die Bibliothek habe ich in einem seperaten C+±Projekt gespeichert.
Das Compilieren und das Ausführen von javcpp funktioniert problemlos, nur bei der Laufzeit bekomme ich dann folgenden Fehler:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniNativeHandler in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1874)
	at java.lang.Runtime.loadLibrary0(Runtime.java:849)
	at java.lang.System.loadLibrary(System.java:1087)
	at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:701)
	at com.googlecode.javacpp.Loader.load(Loader.java:578)
	at com.googlecode.javacpp.Loader.load(Loader.java:532)
	at nativeUtil.NativeHandler.<clinit>(NativeHandler.java:21)

Noch zur Anmerkung: die Ergebnisse vom javacpp habe ich mittels -d umgeleitet.

Hoffe ihr könnt mir helfen.

Gibt es irgendwo eine “jniNativeHandler.dll” (Win) oder “jniNativeHandler.so” (Linux) oder “jniNativeHandler.jnilib” oder “jniNativeHandler.dylib” (Mac)?

Wenn ja, kopier’ die Date mal ins Wurzelverzeichnis deines Java-Projekts, oder setze den java.library.path so, dass er auf das Verzeichnis zeigt, wo die entsprechende Datei drin liegt.

Danke.
Ich habe das erste Problem gelöst, allerdings auf eine andere Art. Ich habe in der Plattform-Annotation die Attribute von link und linkpath gesetzt, und siehe da, der Fehler ist weg.
Nun habe ich allerdings einen neuen Fehler:

Ich hoffe ihr könnt mir hier auch helfen.

Leider kenne ich mich mit den Details von JavaCPP nicht aus. Ein Blick über den Sourcecode…: Ja, es sieht zumindest “interessant” aus. Ob das Generieren und Compilieren zur Laufzeit im Einzelfall der günstigste Weg ist, muss jeder für sich entscheiden. Jedenfalls besagt die Meldung genau das, was sie besagt: Er versucht eine “Methode” aufzururufen (oder eine Klasse/Field zu finden), die nicht existiert. Das Name Mangling wäre hier ein heißer Kandidat, aber um das genauer einzugrenzen, müßte man sich wohl durch die (doch teilweise recht umfrangreichen ;)) Klassen von javacpp wühlen ( http://code.google.com/p/javacpp/source/browse/src/main/java/com/googlecode/javacpp/Generator.java !?). Ist das ein Dummy-Testprojekt, oder schon das “richtige”, was du anbinden willst? Falls letzteres: Hat ein Dummy/Testprojekt bei dir schon funktioniert?

Also, das Problem habe ich nun ganz einfach gelöst.
Ich habe den (C++)Quellcode in Module gegliedert gehabt, und das hat dann
Probleme gemacht. Ich habe nur noch die cpp-Dateien eingebunden,
und das Problem war Geschichte.
Danke noch mal!