我正在开发非标准应用程序。基本上它是使用嵌入式 Mozilla 浏览器(mozilla-interfaces-1.9.2.12.jar、mozilla-glue-1.9.2.12.jar)的 SWT 应用程序,它应该显示包含小程序的 html 页面(也是我自己开发的)。这些小程序经过签名并将证书导入到密钥库中。在标准的独立 Mozilla 浏览器中运行小程序时,一切正常。
即使正常运行我的 SWT 应用程序(我的意思是作为没有 SecurityManager 的独立 Java 桌面应用程序)一切正常 - 嵌入式浏览器出现并显示带有小程序的 html 页面。
但是,当我尝试通过 Java Web Start (jnlp) 运行此应用程序时,我遇到了麻烦。我想我的 jnlp 定义明确,它包含我能够在 Internet 讨论中找到的所有标签。所以有例如
<security>
<all-permissions/>
</security>
等我的 SWT 应用程序,resp。它的所有 jar 文件都已签名(与用于小程序的证书相同)。它开始正常,它执行在没有所有权限和签名的情况下不允许的操作,它甚至显示 SWT 窗口(因此 SWT 本身工作正常),但是当它应该显示嵌入式浏览器时,我得到 UnsatisfiedLinkException。有趣的是,当我创建具有某些特定权限集的 .java.policy 文件时,它可以正常工作,applet 也可以正常工作。扮演福尔摩斯的角色我发现这组权限包含
java.io.FilePermission
java.lang.RuntimePermission
+ permissions that are neccessary for applets.
这对你们中的任何人都有意义吗?看起来 swt mozilla 浏览器在某种特定的 SecurityManager 中运行,它忽略了应用程序本身已签名并且标记存在于我的 jnlp 文件中的事实。
当我加载没有小程序的页面时,仍然提到两个权限是显示浏览器窗口所必需的。我想在没有任何 .java.policy 文件且用户端没有额外设置的情况下运行此应用程序。我感谢每一个建议。
先感谢您。
沃伊塔