当前位置: 首页 > 面试题库 >

Java:从本地小程序调用.dll…我做错了

翟鸿振
2023-03-14
问题内容

因为小程序是本地安装的,所以应该没有安全限制。

但是我得到:

java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission
loadLibrary.jzmq)

当我的应用尝试致电时

static{
     System.loadLibrary("jzmq");
}

是什么赋予了?我想让它在没有安全问题的情况下顺利运行会丢失什么(因为它是用户安装的本地小程序,所以应该如此)?

顺便说一句,它可以从Eclipse“运行”中正常运行,只是不能在我希望它运行的浏览器中运行。


问题答案:

通过本地文件系统(file:///)的浏览器插件运行的Applet受到的安全检查与从Web上加载的Applet几乎完全相同。区别在于从Web加载的小程序具有“回拨”权限,即。连接回源于该小程序的服务器,以及从文件系统加载的小程序都有权访问同一文件夹中的文件。

默认情况下,沙盒在两种情况下均不允许加载本机库。

您可以考虑签署小程序。用户将必须单击“安全性”对话框。并且,除非您有从证书颁发机构购买的代码签名证书,否则该对话框将警告用户以下事实:该证书不是由受信任方签名的。

我不完全了解您的用例,但是如果您可以在本地计算机上运行其他代码,则可以始终更改Java安全策略,以便在某个特定的本地位置信任.jar文件。这样就不会出现安全对话框。

为此,您可以更改Java策略文件,该文件在具有Java 6的Windows计算机上可能位于:

%程序文件%\ Java \ jre6 \ lib \ security \ java.policy

并添加新的权限,如下所示:

grant codeBase "file:///path/yourcomponent.jar" {
      permission java.lang.RuntimePermission "loadLibrary.jzmq";
};

编辑:要提供完整的权限,您可以添加一个这样的权限(这是从我刚才做的成功测试中复制的):

grant codeBase "file:///C:/component/policytest.jar" {
      permission java.security.AllPermission;
};


 类似资料:
  • 问题内容: 我有一个用c#创建的dll,在调用时会执行一些数据库操作。我必须将一些参数从Java应用程序传递到dll中的方法。关于如何执行此操作的任何想法。 要么 通过Java应用程序在c#中调用方法的更好的主意吗? 谢谢 编辑:我的Java应用程序是AVAYA平台的标准Dialogue Designer应用程序,并且我已经开发了一个仅在.net SDK上工作的C#应用​​程序。所以我需要将数据从

  • 我在visual studio中创建了一个dll(我没有使用任何win\u API函数)。我想从我生成的android.apk文件中调用这个dlll,但在运行这个文件时,我遇到了这个错误。 "java.lang.无法从加载器加载Testdll1dalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/], nativeLibrary

  • 问题内容: 我正在将Java用于小型应用程序。这是对现有MFC项目的重写。我需要更改一个现有的dll,以启用使用JNI从Java进行的访问。所有这些Java知识对我来说都是新手,因此当我阅读其他论坛帖子时遇到了一些麻烦,并且感觉比较密集。在现有的dll中,我具有如下功能: 愚蠢的提问时间。如何正确设置它以被Java调用? 我尝试了这个: 我包括jni.h,一切编译正常。但是,当我从Java调用它时

  • 我正在尝试与Java和Cobol进行通信。我需要从Cobol调用一个Java程序(带有参数)。 我阅读了Microfocus的一些文档:http://supportline.microfocus.com/documentation/books/nx40/dijafc.htm http://supportline.microfocus.com/documentation/books/nx40/dij

  • 问题内容: 我想从Java应用程序调用Servlet。问题是,该调用似乎未到达Servlet。我没有收到任何错误,但是没有到达Servlet中的第一个输出“ doPost”。如果我在Web浏览器中打开URL,我当然会得到如下错误:不支持GET等。但是至少我知道发生了一些错误。 我使用以下代码(ActionPackage类仅包含一个Vector参数,并且可序列化): Java应用程序: Servle

  • 我在java中创建了一个在桌面上执行时可以正常工作的Swing游戏。但是,由于不可预见的事件,我的老板现在要求将游戏变成一个小程序,以便可以嵌入到网站中(不,JWS不是一个选项)。 以下是我将游戏转换为小程序的步骤: 1)将我的main类更改为具有public ulureinit()而不是public静态ululemain(),并从Applet扩展它 2) 更改了我的myJFrame。java类现