论坛首页 移动开发技术论坛

JNI:java 调用dll时,dll的位置问题

浏览 24935 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-09  
JianPinNative.java中的System.loadLibrary("EasySpell");
我的dll在system32,这个类的包下面,
这个类的class旁边都有,
在cmd下面进入运行这个类时能得到正确的测试结果,但在Eclipse下面,启动Tomcat时,
这个类的System.loadLibrary("EasySpell");报错,
找不到dll文件(java.lang.UnsatisfiedLinkError)。
   发表时间:2007-03-09  
我以前也做过jni,在cmd下确实能得到结果,实际环境确实不能原因在于dll不能放到package目录下,所以我当时就放到src根目录下了,那个java类也放到src根目录下,然后问题就没有了
0 请登录后投票
   发表时间:2007-03-09  
可以指定classpath
想想jdk不也用了N多的JNI么...原理一样
0 请登录后投票
   发表时间:2007-03-09  
再问一个很弱智的问题:
我可以把类拿到src下面,
但是别的包里面的类调用它的时候怎么调呢??
0 请登录后投票
   发表时间:2007-03-09  
类放在SRC但是编完的class是放在一起吧....
0 请登录后投票
   发表时间:2007-03-09  
System.out.println("java.library.path :"+System.getProperty("java.library.path"));
在cmd和Tomcat下打出来的内容一样。

我在jdk的bin下面放了dll也不行,为什么cmd下可以读到,但是在Tomcat下面就读不到了呢???
0 请登录后投票
   发表时间:2007-03-09  
抛出异常的爱 写道
类放在SRC但是编完的class是放在一起吧....

不是,用的是Ecplise编译的,类在classes目录下
0 请登录后投票
   发表时间:2007-03-09  
echo %PATH% 下面的路径中的一个!
0 请登录后投票
   发表时间:2007-03-09  
qing_pu 写道
再问一个很弱智的问题:
我可以把类拿到src下面,
但是别的包里面的类调用它的时候怎么调呢??

这个你要通过ClassLoader来读取了,普通的方法是找不到这个类的,因为这个类没有package,具体我也不记得了,一年半前做的东西了

引用
类放在SRC但是编完的class是放在一起吧....
虽然放在一起,但是因为那个调jni的类没有package,所以其他有package的类是找不到的
0 请登录后投票
   发表时间:2007-03-09  
java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.5.0_09\bin\EasySpell.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
        at java.lang.Runtime.loadLibrary0(Runtime.java:822)
        at java.lang.System.loadLibrary(System.java:993)
        at JianPinNative.<clinit>(JianPinNative.java:8)

现在能找到dll,但是又报了个新的错误,代码在上面。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics