1

我编写了一个 Applet,我在其中使用 JNA 与设备进行通信。我需要获取设备读取的值并将其保存在数据库中。我给自己提出的解决方案是通过javascript调用Applet方法并将返回注入JSP中。嗯......在Applet的执行过程中,我需要下载一个DLL文件(在Windows上运行的ps),将其保存在磁盘上并将下载它的路径添加到JNA路径中。但是,当我运行 Applet 时,它会抛出 java.security.AccessControlException,说“访问被拒绝”。这是JSP代码...

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>..:: Testing ::..</title>
        <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
        <script>
            $(document).ready(function() {
                $('#myTrigger').click(function() {
                    alert($('#myApplet')[0].capture());                    
                });
            });
        </script>
    </head>
    <body>
        <h1>Test Applet</h1>
        <object type="application/x-java-applet" height="0" width="0" id="myApplet">
            <param name="code" value="AppletHW" />
            <param name="archive" value="AppletHW.jar,jna.jar" />
        </object>
        <a id="myTrigger" href="#">Click here</a>
    </body>
</html>

...我的小程序看起来像这样...

public class AppletHW extends Applet {

    public String capture() {        
        String folder = System.getProperty("java.io.tmpdir");
        File path = new File(folder + File.separator + ".applethw");
        System.setProperty("jna.library.path", path.getAbsolutePath());[/code]

        // I download the DLL file

        MyDLL lib = (MyDLL) Native.loadLibrary("MyDLL", MyDLL.class);
        return lib.capture();
    }
}

PS 我的小程序 jar 和 JNA 都已签名。

4

0 回答 0