【问题标题】:JApplet in Jar file can only be run from html contained in Jar fileJar 文件中的 JApplet 只能从 Jar 文件中包含的 html 运行
【发布时间】:2011-10-07 04:36:08
【问题描述】:

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

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

【问题讨论】:

  • 你的问题没有任何意义。 HTML 文件告诉浏览器有关 JAR 文件的信息,而不是相反。你的意思是你不能从你的applet 访问JAR 文件中的一些other 资源吗?请澄清您的问题。
  • 我想要一种从 jar 中、从浏览器而不是从任何 java 代码中运行 html 的方法。我不知道为什么,但我似乎永远无法获得一个不为空的 AppletContext,所以我不得不求助于奇怪的东西来将文本或图像加载到小程序中。这恰好是一个非常奇怪的工作。
  • 这一切都毫无意义。浏览器看不到 JAR 中的 HTML 文件。它所能做的就是执行一个 JAR 中的小程序。如果“根本没有 Java 代码”,则没有小程序,因此也没有 AppletContext。这还没有任何意义。

标签: java html jar applet appletviewer


【解决方案1】:

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

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

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

【讨论】:

  • 呃,我不想从 java 代码中调用 html,我想要一种从浏览器调用 jar 中的 html 的方法。
  • 我仍然觉得你的解释像泥巴一样清晰。也许如果你解释了为什么你正在尝试做你想做的事情,它会更清楚。
【解决方案2】:

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

【讨论】:

  • 它们被打包在一个jar中,但不幸的是如果我在jar之外有一个html文件,那么代码就无法再加载jar里面的资源了。 (即使你的代码在罐子里。)
猜你喜欢
  • 2018-11-26
  • 2011-09-18
  • 2016-12-05
  • 1970-01-01
  • 2013-06-08
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多