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

Java Jar文件中的JApplet只能从Jar文件中包含的html运行,java,html,jar,applet,appletviewer,Java,Html,Jar,Applet,Appletviewer,我有一个基于应用程序的JApplet。我需要它读取一个包含所有数据的文本文件。所以我把它放在Jar文件中,在AppletViewer中一切都变得很愉快 不幸的是,并不是所有的事情都是幸福的 当我试图从一个不在jar中的html页面在浏览器中运行小程序时,我得到了一个好消息:java.security.AccessControlException:access denied(java.io.FilePermission (然后列出jar在我的文件系统上的位置和!资源地址) 但是如果我在像winzi

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

不幸的是,并不是所有的事情都是幸福的

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

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

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

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

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

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

是对小程序的HTML调用的完整性


我不打算对它进行签名,因为它确实不需要签名。我只想回jar。

应该通过URL而不是FileInputStream访问该文件。使用此选项可以获取URL:

URL urlToText = this.getClass().getResource("path/to/the.html");
这将在沙盒小程序中工作。

干净的方式是:
打包你的“.class”jar中的文件。在jar外部有一个html文件,该文件引用您的jar-inside小程序标记。如果您的小程序需要访问用户文件系统,那么正确的方法是对您的小程序jar进行签名。请参见

您的问题没有任何意义。html文件告诉浏览器jar文件,而不是相反。您的意思是不能从您的小程序访问JAR文件中的其他资源?请澄清您的问题。我想要一种从JAR中,从浏览器,而不是从任何java代码运行html的方法。我不知道为什么,但我似乎无法获得一个非空的AppletContext,所以我不得不求助于奇怪的方法将文本或图像加载到小程序中。这这是一个非常奇怪的工作。这是毫无意义的。浏览器看不到JAR中的HTML文件。它所能做的就是执行JAR中的小程序。如果“根本没有Java代码”,就没有小程序,所以也没有AppletContext。这还没有任何意义。呃,我不想用Java代码调用HTML,我想找到一种从浏览器调用jar内部html的方法。我仍然发现您的解释非常清晰。如果您解释了为什么要尝试执行您正在尝试执行的操作,可能会让它更清晰。它们打包在一个jar中,但不幸的是,如果我在jar外部有一个html文件,那么代码将无法再加载resojar中的资源(即使代码也在jar中)