小编mco*_*tle的帖子

通过JNI从Applet调用DLL

我有一个"概念证明"的作品,跨越了一些不熟悉的领域.我的任务是将EFTPOS计算机连接到在我们的Intranet上的浏览器中作为applet运行的应用程序.

我暂时忽略了EFTPOS dll并用我选择的语言(Delphi)创建了一个简单的JNI修饰DLL,它只是将字符串记录到c:\中的文本文件中,我可以从本地Java应用程序成功调用它.

但是,当我创建一个applet来做同样的事情时,将其编译成.JAR,签署JAR并尝试通过Javascript在applet中调用该方法失败.

我正在使用的一个高级Java人员并不认为有可能让它工作,因为允许applet执行此操作本身就是"邪恶的".

您可以在java.policy文件中放入一个条目以允许loadLibrary.以及allPermission&我已经尝试了这些行中的大量变体,但无法在Java控制台中产生以下错误跟踪:

java.lang.ExceptionInInitializerError
  at app.TestApplet.LogAString(Unknown Source)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
  at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
  at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
  at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.DLoggerImpl)
  at java.security.AccessControlContext.checkPermission(Unknown Source)
  at java.security.AccessController.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkLink(Unknown Source)
  at java.lang.Runtime.loadLibrary0(Unknown Source)
  at java.lang.System.loadLibrary(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface applet

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

applet ×1

java ×1

java-native-interface ×1