2011-02-23 89 views
2

我正在开发非标准应用程序。基本上它是使用嵌入式Mozilla浏览器(mozilla-interfaces-1.9.2.12.jar,mozilla-glue-1.9.2.12.jar) 的SWT应用程序 ,它应显示包含小程序(由我自己开发)的html页面。 这些小程序已签名并且证书被导入到密钥库中。在标准独立Mozilla浏览器中运行 小程序时,一切正常。安全管理器SWT嵌入式运行在Java WebStart上的Mozilla浏览器问题(jnlp)

即使运行我的SWT应用程序正常(我的意思是作为一个独立的Java桌面应用程序 withou安全管理器)一切工作就好了 - 嵌入式浏览器出现,并可以显示HTML网页 与小程序。

但是,当我试图通过Java Web Start(jnlp)运行此应用程序时,我遇到了麻烦。 我想我的jnlp定义的很好,它包含了所有我能够通过互联网讨论找到的标签。 因此,有例如

<security> 
    <all-permissions/> 
</security> 

等 我的SWT应用程序,RESP。所有的jar文件都被签名(与小程序使用的相同的证书)。 它开始很好,它没有所有权限和签名都不允许的操作, 它甚至显示SWT窗口(因此SWT本身工作正常),但是当它应该显示嵌入式浏览器 我得到UnsatisfiedLinkException。有趣的是,当我使用 创建.java.policy文件的某些特定权限时,它可以正常工作,小程序也可以工作。播放 福尔摩斯的角色时,我想通了,这组权限包含

java.io.FilePermission 
    java.lang.RuntimePermission 
+ permissions that are neccessary for applets. 

是否有意义给你的人?它看起来像swt mozilla浏览器运行在某种 特定的SecurityManager,它忽略了应用程序本身已签名的事实,也标记 存在于我的jnlp文件中。

当我加载没有小程序的页面时,仍然提到需要两个权限才能显示 浏览器窗口。我想在没有任何.java.policy文件和 的情况下运行此应用程序,而无需在用户端进行额外设置。我感谢每一个建议。

预先感谢您。

Vojta开发

回答

0

不知道,如果同样的问题,因为我从来没有使用的小程序,但试图通过在webstart运行捆绑XULRunner的SWT-基于浏览器的应用程序时,我也有问题。此

一个解决方法是设置Java代码中的策略

Policy.setPolicy(new Policy() { 
    public PermissionCollection getPermissions(CodeSource codesource) { 
    Permissions perms = new Permissions(); 
    perms.add(new AllPermission()); 
    return(perms); 
    } 
    public void refresh() { } 
} 

(只创建浏览器实例之前...)我记得的Windows XP仍然无法与此运行JNLP。但Windows 7,Linux和Mac OS X的几个版本都可以。