当前位置: 技术问答>java相关
Java使用JNI方法调用DLL问题
来源: 互联网 发布时间:2015-08-04
本文导语: 在普通Java程序中在main(arg[])方法中使用JNI方法调用是正确的,但是在Java applet中调用就会出现以下错误: java.lang.UnsatisfiedLinkError: greet at cheess.demo.greet(Native Method) at cheess.demo.init(demo.java:42) at com.borland.jbuilder.runtime.apple...
在普通Java程序中在main(arg[])方法中使用JNI方法调用是正确的,但是在Java applet中调用就会出现以下错误:
java.lang.UnsatisfiedLinkError: greet
at cheess.demo.greet(Native Method)
at cheess.demo.init(demo.java:42)
at com.borland.jbuilder.runtime.applet.AppletTestbed.startApplet(Unknown Source)
at com.borland.jbuilder.runtime.applet.AppletTestbed.main(Unknown Source)
是连接DLL方法出错还是根本不能在applet中调用JNI方法?如果可以要加一段什么代码才能保证不出错?这个问题困扰了我很久了.请热心人帮小弟解决一下啊...
我用的是jbuiler6,是不是没有正确的JNI配置会导致这种错误?
java.lang.UnsatisfiedLinkError: greet
at cheess.demo.greet(Native Method)
at cheess.demo.init(demo.java:42)
at com.borland.jbuilder.runtime.applet.AppletTestbed.startApplet(Unknown Source)
at com.borland.jbuilder.runtime.applet.AppletTestbed.main(Unknown Source)
是连接DLL方法出错还是根本不能在applet中调用JNI方法?如果可以要加一段什么代码才能保证不出错?这个问题困扰了我很久了.请热心人帮小弟解决一下啊...
我用的是jbuiler6,是不是没有正确的JNI配置会导致这种错误?
|
这个问题已经与调用dll无关了,因为applet是运行在能够运行在因特网上任何浏览器上的程序,他的安全管理十分严格.想象一下,如果有个网页嵌入了你的applet,某人在浏览网页时这个applet却偷偷的把他存在电脑上的信用卡密码文件打开,然后传到你的机器上.....嘿嘿,你就乐吧你!
因此,applet一旦运行他的安全管理器就会阻止你对任何本地文件的操作
所以你要调用本地dll,就不能用applet来实现
因此,applet一旦运行他的安全管理器就会阻止你对任何本地文件的操作
所以你要调用本地dll,就不能用applet来实现
|
applet是在沙箱中执行的,为了保障安全性,默认是不能管理任何和本地相关的资源的,包括本地方法的执行,在java的老的版本中这是规定死的,不可以更改applet的沙箱,在java2以后变得灵活一些,可以定制自己的沙箱,包括applet的类装载器,你可以看一下相关的java安全方面的书籍。
|
在Applet中可以使用dll文件。 dll文件只要copy到winnt/system32(win2k)或者windows(win98)下就可以了。不一定要注册。
出现你的那种情况,可能是dll文件加载的未成功的问题。 请确认dll文件是否加载成功。
还有,最好能给出一段你的code,那样,找错误比较容易。
出现你的那种情况,可能是dll文件加载的未成功的问题。 请确认dll文件是否加载成功。
还有,最好能给出一段你的code,那样,找错误比较容易。