jni 异常:Exception in thread "main" java.lang.UnsatisfiedLinkError: hello

rainycareless 2007-02-02 04:25:00
java代码:
public class TestDLL {
static{
System.loadLibrary("goodluck");
}
public native void hello();

public static void main(String[] args){
System.out.println(System.getProperty("java.library.path"));
System.out.println("start");
new TestDLL().hello();
}
}

c头文件 javah生成
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class TestDLL */

#ifndef _Included_TestDLL
#define _Included_TestDLL
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestDLL
* Method: hello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_TestDLL_hello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

c源文件:
#include "goodluck.h"
#include "stdio.h"
JNIEXPORT void JNICALL Java_TestDLL_hello(JNIEnv * env, jclass jc){

printf("hello\n");
}

执行时,总是报Exception in thread "main" java.lang.UnsatisfiedLinkError: hello
当然dll文件 在当前目录 system32下都放过。
...全文
10921 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
stwwts 2012-09-08
  • 打赏
  • 举报
回复
System.loadLibrary("hello");中“hello”要与生成的hello.dll同名,否则会出现那个错误
qiraosky 2012-07-31
  • 打赏
  • 举报
回复
是不前期配置哪里有问题呢,
我也遇到这样的问题,
不过我用DLLVIEW 看了,有指定的方法,
有VC可以正常使用,
为啥JAVA JNI 不成呢。
程仔 2012-07-25
  • 打赏
  • 举报
回复
这个问题解决了不。
遇到同样的问题了。
哪位仁兄解答下。
程仔 2012-07-25
  • 打赏
  • 举报
回复
5年了 这个问题总该解决了吧
遇到同样的问题,
那位大哥帮帮忙
  • 打赏
  • 举报
回复
5年了 这个问题总该解决了吧 那位大哥帮帮忙
宝贝小丽 2011-07-11
  • 打赏
  • 举报
回复
遇到问题不会解决很烦
mars914 2011-03-13
  • 打赏
  • 举报
回复
我的还是找不到指定本地方法,ubuntu下可以找到,但在debian下就找不到了?
请高手指教、、、、、
can007 2011-01-12
  • 打赏
  • 举报
回复
问题解决了没?我也遇到了这个。。。郁闷
shangsheng0618 2010-12-20
  • 打赏
  • 举报
回复
问题:生成的动态链接库成功,但是却没有包含你要的函数。也就是说动态链接库不全。
解决办法:在生成.h头文件前先把java程序编译一下(虽然eclipse是自动编译,手动再debug一下)然后再生成头文件->生成动态链接库->运行java程序
wxp1091207931 2010-10-12
  • 打赏
  • 举报
回复
我也遇到了同样的问题,那个高手知道 快快指点一下
liuyiye 2010-07-09
  • 打赏
  • 举报
回复
刚刚遇到这个问题有谁帮忙解答 搞了一两天 没搞好
lvwenxia 2010-03-08
  • 打赏
  • 举报
回复
同样的问题,继续等待呀!
小马哥 2009-02-24
  • 打赏
  • 举报
回复
我也遇到同样问题, 请高手指点。
ffb 2007-08-22
  • 打赏
  • 举报
回复
(new TestDLL()).hello();
hengxxh 2007-03-13
  • 打赏
  • 举报
回复
当使用 JNI 从 Java 程序访问本机代码时,您会遇到许多问题。您会遇到的三个最常见的错误是:

无法找到动态链接。它所产生的错误消息是:java.lang.UnsatisfiedLinkError。这通常指无法找到共享库,或者无法找到共享库内特定的本机方法。


无法找到共享库文件。当用 System.loadLibrary(String libname) 方法(参数是文件名)装入库文件时,请确保文件名拼写正确以及没有指定扩展名。还有,确保库文件的位置在类路径中,从而确保 JVM 可以访问该库文件。


无法找到具有指定说明的方法。确保您的 C/C++ 函数实现拥有与头文件中的函数说明相同的说明。
(摘自IBM中文网)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧