我在本地运行Java applet时遇到问题,即类文件驻留在本地文件系统中,而不是服务器上。以下示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<applet code="Java10Test.class"
width=200
height=200
codebase="http://www.cis.upenn.edu/~matuszek/General/JavaVersionTests/"
>
</applet>
Text ...
</body>
</html>
适用于Firefox 23和Oracle Java 7u25。但是,如果我将Java10Test.class
下载到本地计算机并将其放在与.html
相同的文件夹中,无论我使用什么代码库,它都无效。我尝试codebase="."
和codebase="file:///pathToTheFolder"
但没有成功。 Firefox甚至没有为applet保留200x200的空间。 Java也不是在后台启动的(Java控制台不像所有其他applet那样打开),即它不是Java安全问题。没有警告/错误消息。
本地版本可以在Chrome中正常运行。该行为可在不同的计算机(Mac / Linux)上重现。
在Firefox中本地使用applet的正确方法是什么?我需要这个系统,无法访问互联网。
答案 0 :(得分:2)
在Firefox中本地使用applet的正确方法是什么?
从localhost的服务器运行它们(例如安装Apache),它们应该显示与网络上相同的行为。
..它仍然很有趣,为什么没有正确使用本地类文件。
我建议它与安全性有关。从本地文件系统加载脚本时,IE一直提示运行脚本的HTML。通常,“网络”被认为是比您自己的磁盘更安全的环境。
顺便说一句,我运行FF并注意到它最近在运行用于嵌入applet和启动JWS应用程序的Deployment Toolkit Script时失败了。我没有意识到它只是(并且完全)忽略了'本地(unjar'd,unsigned)applet元素',直到我与你的测试。在没有警告或提示的情况下忽略它们的事实是..disturbing,至少对于必须编写或维护applet的开发人员而言。 :(
确保applet成功加载的唯一方法是使用JS在加载后查询applet 。如果在特定时间后无法从JS访问applet的公共方法,则假定applet因任何原因无法加载并从那里继续。
答案 1 :(得分:2)
这是known bug in Firefox 23。它应该阻止使用本地不安全的代码库,如..
,但也会意外阻止其他本地路径。
目前已知的解决方法是:
security.fileuri.strict_origin_policy=false
about:config