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

时间:2011-07-17 16:01:37

标签: java html jar applet appletviewer

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

不幸的是,浏览器领域的一切都不高兴。

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

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

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

所以我的问题是WTF?我可以从浏览器中打开jar文件中的html文件...甚至在iframe内部或任何东西都可以,只要它不会进一步搞乱权限。

或者我可以从jar外的html页面调用applet吗?我现在不使用JNLP,因为我想尽快拼凑一个原型applet。

<applet code = 'CatalogApplet' 
archive = 'ContactCatalog.jar', 
width = 1000, 
height = 800 />

HTML调用applet的完整性。

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

2 个答案:

答案 0 :(得分:1)

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

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

这将在一个沙盒小程序中工作。

答案 1 :(得分:0)

干净的方式是: 将你的“.class”文件打包在一个jar中。在jar之外有一个html文件,它引用你的applet标签内的jar。如果您的applet需要访问用户文件系统,那么正确的方法是签署您的applet jar。见http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html