-1

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

不幸的是,在浏览器领域并非一切都令人满意。

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

(然后它会列出 jar 在我的文件系统上的位置和 !resource 地址)

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

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

或者我可以从 jar 之外的 html 页面调用小程序吗?我现在没有使用 JNLP,因为我想尽快拼凑出一个原型小程序。

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

是对小程序的整个 HTML 调用。

我不打算签它,因为它真的不需要签。我只是想打回罐子。

4

2 回答 2

1

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

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

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

于 2011-07-17T16:18:38.547 回答
0

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

于 2011-07-17T19:01:55.743 回答