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

发布于 2024-11-24 06:39:20 字数 726 浏览 1 评论 0原文

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

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

当我尝试从不在 jar 中的 html 页面在浏览器中运行小程序时,我得到了好旧的信息:java.security.AccessControlException:访问被拒绝(java.io.FilePermission)

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

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

所以我的问题是 WTF?我可以从浏览器中打开 jar 文件内的 html 文件吗?就可以了,只要它不会进一步扰乱权限。

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

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

是实体 对小程序的 HTML 调用

我不会对其进行签名,因为它确实不需要签名。我只是想给 jar 打电话。

I have a JApplet that is based off an application. I need it to read in a text based file containing all of it's data. So I stuck it in the Jar file and everything became happy in AppletViewer.

Unfortunately not everything is happy in browser land.

When I try to run the applet in a browser from a html page which is not in the jar, then I get the good old: java.security.AccessControlException: access denied (java.io.FilePermission

(it then lists the location of the jar on my filesystem and the !resource address)

But if I open the jar file up in a zip extractor/viewer like winzip and open the page that launches the applet (that I put inside the jar) it works fine. As expected, it can only access resources that have the same host, which seems in this case to come right down to the jar file itself.

SO my question is WTF? Can I open the html file inside the jar file from a browser... even inside an iframe or anything would be ok, as long as it doesn't further mess up the permissions.

Or can I call the applet from a html page outside the jar? I'm not using JNLP right now, cos I wanted to cobble together a prototype applet ASAP.

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

Is the entirity of the HTML call to the applet.

I'm not going to sign it, because it really shouldn't need signed. I am just wanting to call back to jar.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空名 2024-12-01 06:39:23

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

the clean way is :
package your ".class" files in a jar . have an html file outside the jar that references your jar inside applet tag. if your applet requires access to user filesystem then the right way to go is to sign your applet jar. see http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html

金橙橙 2024-12-01 06:39:22

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

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

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

The file should be accessed via URL, not by FileInputStream. Use this to get the URL:

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

That will work in a sand-boxed applet.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文