Oi gente.
Estou estudando JNI seguindo um livro e estou me deparando com o seguinte erro abaixo:
java.lang.UnsatisfiedLinkError: no JNIPrintWrapper in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1517)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at codigofonte.JNIPrintWrapper.<clinit>(JNIPrintWrapper.java:10)
at codigofonte.JNIPrintMain.main(JNIPrintMain.java:11)
Exception in thread "main"
não sei o que é.
O meu codigo é bem simples mais não sei como resolver esse erro, a IDE que estou usando é o eclipse.
Abaixo estou colocando os codigos criados.
package codigofonte;
//Reserva acesso ao metodo native
// and loads a library and declarea a native method
public class JNIPrintWrapper {
static{
System.loadLibrary("JNIPrintWrapper");
}
//native c++ method
public native void printMessagem(String message);
}
// Creates a new instance of the Java wrapper class,
// and calls the native methods.
package codigofonte;
public class JNIPrintMain {
// uses JNI to print a message
public static void main(String args[]) {
JNIPrintWrapper wrapper = new JNIPrintWrapper();
// call to native methods through JNIWrapper
wrapper.printMessagem("Welcome to JNI!\n");
}
}
#include<jni.h>
//Cabeçalho para classe JNIPrintWrapper
//JNIPrintWrapper.h header file generated by javah.
#ifndef _Included_JNIPrintWrapper
#define _Included_JNIPrintWrapper
#ifdef __cplusplus
extern "C"{
#endif
/*
* Class: JNIPrintWrapper
* Method: printMessage
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_JNIPrintWrapper_printMessage
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
// Fig. G.3 JNIPrintWrapperImpl.cpp
// Implements the header created by Java
// to integrate with JNI.
//JNIPrintWrapperImpl.cpp implements the javah header to print
//a message.
// C++ core header
#include <iostream.h>
#include "JNIPrintWrapper.h"
// prints string provided by Java application
JNIEXPORT void JNICALL Java_JNIPrintWrapper_printMessage
( JNIEnv * env, jobject thisObject, jstring message )
{
jboolean copied;
const char* charMessage = env->GetStringUTFChars( message, &copied );
//print message
cout << charMessage);
//release string to prevent memory leak
env->ReleaseStringUTFChars( message, charMessage );
}