Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > java.lang.UnsatisfiedLinkError


Автор: apexTwin 6.10.2008, 18:15
Доброго времени суток всем. Хочу написать native метод. Делаю все по туториалу http://java.sun.com/docs/books/jni/html/start.html

Создал класс 
Цитата

 class HelloWorld {
     private native void print();
     public static void main(String[] args) {
         new HelloWorld().print();
     }
     static {
         System.loadLibrary("HelloWorld");
     }
 }

Скомпилил, генерю .h файл, 
Цитата

javah -jni HelloWorld

Вставляю реализацию
Цитата

 #include <jni.h>
 #include <stdio.h>
 #include "HelloWorld.h"
 
 JNIEXPORT void JNICALL 
 Java_HelloWorld_print(JNIEnv *env, jobject obj)
 {
     printf("Hello World!\n");
     return;
 }

Делаю из нее dll'ку. Запускаю в жаве метод main. Вылетает эксепшн 

Цитата

Exception in thread "main" java.lang.UnsatisfiedLinkError: ua.tmp.HelloWorld.print()V
    at ua.tmp.HelloWorld.print(Native Method)
    at ua.tmp.HelloWorld.main(HelloWorld.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

Библиотека загрузилась, но похоже на то, что не находит метод. 
Смотрю dll'ку просмотрщиком Anywhere PE viewer, пишет

Java_HelloWorld_print@8 (Ordinal: 1, Entry Point RVA: 11d0h (4 560))

Т.е. вроде метод есть. Может кто подскажет, в чем может быть проблема?

Автор: ivg 6.10.2008, 19:39
Код

JNIEXPORT void JNICALL
Java_ua_tmp_HelloWorld_print(JNIEnv *env, jobject obj);

Автор: apexTwin 6.10.2008, 19:42
Ох, прошу прощения. Это я криво запостил. Пытался вначале сделать класс в пакете, потом без

Добавлено через 56 секунд
Ошибка все равно остается (

Автор: apexTwin 8.10.2008, 16:27
Всему виной кривые руки!! 
smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)