Skip to Main Content

Java HotSpot Virtual Machine

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JNI UnsatisfiedLinkError

843829Oct 27 2009 — edited Oct 29 2009
Hi Sir/Madam,

I got stuck with an UnsatisfiedLinkError though I followed the Sun tutorial. Please help me solve the problem.

HelloWorld.java
class HelloWorld 
{
	private native void print();
	public static void main(String[] args) throws Exception
	{
		new HelloWorld().print();
	}
	static 
	{
		System.loadLibrary("Hello");
	}
}
Hello.c
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
I used Visual C++ to create Hello.dll

Now,

C:\Program Files\Java\jdk1.6.0_11\bin>javac HelloWorld.java

C:\Program Files\Java\jdk1.6.0_11\bin>javah -jni HelloWorld

C:\Program Files\Java\jdk1.6.0_11\bin>java -Djava.library.path=. HelloWorld
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld.print()V
at HelloWorld.print(Native Method)
at HelloWorld.main(HelloWorld.java:6)


and when I used -verbose:jni,


C:\Program Files\Java\jdk1.6.0_11\bin>java -verbose:jni -Djava.library.path=. He
lloWorld
[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]
[Registering JNI native method java.lang.Object.hashCode]
[Registering JNI native method java.lang.Object.wait]
[Registering JNI native method java.lang.Object.notify]
...
...
...
[Registering JNI native method sun.misc.Unsafe.tryMonitorEnter]
[Registering JNI native method sun.misc.Unsafe.throwException]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapObject]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapInt]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapLong]
[Registering JNI native method sun.misc.Unsafe.putOrderedObject]
[Registering JNI native method sun.misc.Unsafe.putOrderedInt]
[Registering JNI native method sun.misc.Unsafe.putOrderedLong]
[Registering JNI native method sun.misc.Unsafe.park]
[Registering JNI native method sun.misc.Unsafe.unpark]
[Dynamic-linking native method java.lang.String.intern ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getBooleanAttributes ...
JNI]
[Dynamic-linking native method java.lang.System.mapLibraryName ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalize0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.load ... JNI]

[Dynamic-linking native method java.io.FileInputStream.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.set ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.initIDs ... JNI]
[Dynamic-linking native method java.lang.System.setIn0 ... JNI]
[Dynamic-linking native method java.lang.Object.getClass ... JNI]
[Dynamic-linking native method java.lang.Class.forName0 ... JNI]
[Dynamic-linking native method sun.reflect.Reflection.getClassAccessFlags ... JN
I]
[Dynamic-linking native method sun.reflect.NativeConstructorAccessorImpl.newInst
ance0 ... JNI]
[Dynamic-linking native method sun.misc.VM.initialize ... JNI]
[Dynamic-linking native method java.lang.Runtime.maxMemory ... JNI]
[Dynamic-linking native method java.lang.System.setOut0 ... JNI]
[Dynamic-linking native method java.lang.System.setErr0 ... JNI]
[Dynamic-linking native method sun.misc.Signal.findSignal ... JNI]
[Dynamic-linking native method sun.misc.Signal.handle0 ... JNI]
[Dynamic-linking native method sun.io.Win32ErrorMode.setErrorMode ... JNI]
[Dynamic-linking native method java.lang.Compiler.registerNatives ... JNI]
[Registering JNI native method java.lang.Compiler.compileClass]
[Registering JNI native method java.lang.Compiler.compileClasses]
[Registering JNI native method java.lang.Compiler.command]
[Registering JNI native method java.lang.Compiler.enable]
[Registering JNI native method java.lang.Compiler.disable]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.find ... JNI]

[Dynamic-linking native method java.security.AccessController.doPrivileged ... J
NI]
[Dynamic-linking native method java.io.FileInputStream.open ... JNI]
[Dynamic-linking native method java.io.FileInputStream.readBytes ... JNI]
[Dynamic-linking native method java.io.FileInputStream.available ... JNI]
[Dynamic-linking native method java.lang.reflect.Array.newArray ... JNI]
[Dynamic-linking native method java.io.ObjectStreamClass.initNative ... JNI]
[Dynamic-linking native method java.io.FileInputStream.close0 ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.list ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalizeWithPrefix0 .
.. JNI]
[Dynamic-linking native method java.lang.ClassLoader.findLoadedClass0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.findBootstrapClass ... JNI]

[Dynamic-linking native method java.security.AccessController.doPrivileged ... J
NI]
[Dynamic-linking native method java.util.zip.ZipFile.initIDs ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getLastModifiedTime ... J
NI]
[Dynamic-linking native method java.util.zip.ZipFile.open ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getTotal ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntry ... JNI]
[Dynamic-linking native method java.util.zip.ZipEntry.initIDs ... JNI]
[Dynamic-linking native method java.util.zip.ZipEntry.initFields ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.freeEntry ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getCSize ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getSize ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getMethod ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.initIDs ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.init ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.inflateBytes ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.read ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.reset ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getLength ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.defineClass1 ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.writeBytes ... JNI]
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld.print()V
[Dynamic-linking native method java.lang.Throwable.getStackTraceDepth ... JNI]
[Dynamic-linking native method java.lang.Throwable.getStackTraceElement ... JNI]

at HelloWorld.print(Native Method)
at HelloWorld.main(HelloWorld.java:6)


I dont understand what the problem could be. Please help me.


Thanks in advance.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 26 2009
Added on Oct 27 2009
5 comments
2,425 views