Jar文件中的JApplet只能从Jar文件中包含的html运行



我有一个基于应用程序的JApplet。我需要它在一个基于文本的文件中读取包含它的所有数据。所以我把它放在Jar文件中,AppletViewer中一切都很顺利。

不幸的是,并不是所有的事情都是愉快的浏览器。

当我尝试从不在jar中的html页面在浏览器中运行applet时,我会得到旧的:java.security.AccessControlException: access denied (java.io.FilePermission

)

(然后列出jar在我的文件系统上的位置和资源地址)

但是,如果我在zip解压器/查看器(如winzip)中打开jar文件,并打开启动applet的页面(我放在jar中),它可以正常工作。正如预期的那样,它只能访问具有相同主机的资源,在本例中,这似乎直接涉及到jar文件本身。

所以我的问题是WTF?我可以从浏览器打开jar文件中的html文件吗?即使在iframe或任何东西中也是可以的,只要它不会进一步混淆权限。或者我可以从jar之外的html页面调用applet吗?我现在没有使用JNLP,因为我想尽快拼凑一个原型applet。
<applet code = 'CatalogApplet' 
archive = 'ContactCatalog.jar', 
width = 1000, 
height = 800 />

是对applet的HTML调用的整体。

我不打算签名,因为它真的不需要签名。我只是想回电话给jar。

文件应该通过URL访问,而不是FileInputStream。使用此命令获取URL:

URL urlToText = this.getClass().getResource("path/to/the.html");

干净的方法是:将"。class"文件打包到jar中。在jar之外有一个HTML文件,该文件在applet标记中引用jar。如果您的applet需要访问用户文件系统,那么正确的方法是对applet jar签名。见http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html

最新更新