我有一个基于应用程序的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