JNI Demo JavaInsel8

Hoss

Mitglied
Hallo,

möchte das JNI Demo nachschreiben.
Meine Dateien sehen so aus:

StrLenDemo.java
Java:
package jniDemo;

public class StrLenDemo 
{   
	public static void main( String[] args )   
	{     
		System.out.println( StrLen.strlen("2003 UB313") );   
	} 
}

StrLen.java
Java:
package jniDemo;

public class StrLen 
{
	static 
	{     
		System.loadLibrary( "strlen" );
		System.out.println( System.getProperty("java.library.path") );
	}
	
	public static native int strlen( String s ); 
}

strlen.h
Code:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jniDemo_StrLen */

#ifndef _Included_jniDemo_StrLen
#define _Included_jniDemo_StrLen
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     jniDemo_StrLen
 * Method:    strlen
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_jniDemo_StrLen_strlen
  (JNIEnv *, jclass, jstring);

#ifdef __cplusplus
}
#endif
#endif

strlen.c
Code:
#include <jni.h> 
#include "strlen.h" 
#include <stdio.h> 

JNIEXPORT jint JNICALL Java_com_tutego_jni_StrLen_strlen(
                             JNIEnv *env, jclass clazz, jstring s ) 

{   
  printf( "Hallo Java-Freunde!\n" );   
  return 0; 
}

Die .c Datei hab ich mit dem gcc von cygwin mit folgenden Befehl compielert:

gcc -mno-cygwin -I C:/Programme/Java/jdk1.6.0/include -I C:/Programme/Java/jdk1.6.0/include/win32 -shared -Wl,--add-stdcall-alias -o ./strlen.dll ./strlen.c


Bekomme bei Ausführung der StrLenDemo diesen Fehler:

Exception in thread "main" java.lang.UnsatisfiedLinkError: jniDemo.StrLen.strlen(Ljava/lang/String;)I
at jniDemo.StrLen.strlen(Native Method)
at jniDemo.StrLenDemo.main(StrLenDemo.java:7)

java.library.path ==

C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.6.0\bin;C:\cygwin\bin;C:\Program Files\Common Files\Nero\Lib\

Genau dass passiert auch beim Orginal JNI Projekt der JavaInsel8 mit den Orginal .c .h .dll Dateien.
Dies Demo sollte aber eigentlich fehlerfrei laufen.

Hat jemand mit JNI Erfahrung und kann mir sagen wos haken könnte?

Gruß
Hoss
 
Zuletzt bearbeitet:

Hoss

Mitglied
Richtig. Hatte das übersehen.

So ist es richtig:
Code:
JNIEXPORT jint JNICALL Java_jniDemo_StrLen_strlen(
und jetzt geht es.

Danke für die Hilfe.

Gruß
Hoss
 

Ähnliche Java Themen


Oben