Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';当通过JavaScript访问方法时,我的小程序是否加载本机库?_Javascript_Security_Applet_Loadlibrary - Fatal编程技术网

为什么可以';当通过JavaScript访问方法时,我的小程序是否加载本机库?

为什么可以';当通过JavaScript访问方法时,我的小程序是否加载本机库?,javascript,security,applet,loadlibrary,Javascript,Security,Applet,Loadlibrary,我有一个用于扫描文档的小程序(使用JTwain)。我的applet由我编写的一个jar、两个第三方jar和一个dll(包装在jtwainjar中)组成。我打算加载applet,然后使用JavaScript访问applet方法。但是,当我执行此操作时,会出现安全异常: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.AspriseJTwain) at j

我有一个用于扫描文档的小程序(使用JTwain)。我的applet由我编写的一个jar、两个第三方jar和一个dll(包装在jtwainjar中)组成。我打算加载applet,然后使用JavaScript访问applet方法。但是,当我执行此操作时,会出现安全异常:

java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.AspriseJTwain)
    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)
    at com.asprise.util.jtwain.SourceManager.init(SourceManager.java:222)
    at com.asprise.util.jtwain.SourceManager.<init>(SourceManager.java:36)
    at com.asprise.util.jtwain.SourceManager.instance(SourceManager.java:28)
    at co.altcom.cache.scanner.CacheScan.scanToPDF(CacheScan.java:91)
    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.GeneratedMethodAccessor3.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.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException:拒绝访问(java.lang.RuntimePermission loadLibrary.AspriseJTwain)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkLink(未知源)
位于java.lang.Runtime.loadLibrary0(未知源)
位于java.lang.System.loadLibrary(未知源)
位于com.asprise.util.jtwain.SourceManager.init(SourceManager.java:222)
位于com.asprise.util.jtwain.SourceManager。(SourceManager.java:36)
位于com.asprise.util.jtwain.SourceManager.instance(SourceManager.java:28)
位于co.altcom.cache.scanner.CacheScan.scanToPDF(CacheScan.java:91)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于sun.plugin.javascript.JSInvoke.invoke(未知源)
位于sun.reflect.GeneratedMethodAccessor3.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于sun.plugin.javascript.JSClassLoader.invoke(未知源)
位于sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(未知源)
位于sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(未知源)
位于sun.plugin2.liveconnect.JavaClass.invoke0(未知源)
位于sun.plugin2.liveconnect.JavaClass.invoke(未知源)
位于sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(未知源)
位于sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(未知来源)
位于sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(未知源)
位于java.lang.Thread.run(未知源)
让我感到困惑的是,我可以在appletsinit方法中运行这些函数(没有例外-applet扫描并保存到计算机文件系统)。只有当JavaScript访问它们时,它们才会失败。我猜我需要制定一些政策,但我找不到任何关于它的信息


有什么想法吗?

将JS调用的代码包装在一个
AccessController.doPrivileged(PrivilegedAction)
(或重载变体)中。

太棒了。正是我想要的。谢谢你。