在关闭此作为以下帖子之一的副本之前,Java改变了Java 1.8中可运行applet的要求。这些要求使得无法运行未由可信证书签名的applet。解决这个问题的唯一方法是将网站添加到例外列表中,这对我来说并不奇怪。
相关但过时的帖子:
我和我的公司'创造了一个我们想要放在我们网站上的游戏。我们将java应用程序转换为Applet。 applet完美地在appletViewer中运行,但它不会在网页中运行。以下是我们使用的清单:
Manifest-Version: 1.0
Application-Name: Battle-Ship
Permissions: sandbox
Created-By: Chetter-Games
// empty line
使用我们自己生成的密钥库(它不是来自可靠的证书分发服务器)对jar文件进行签名。这是jarsigner的输出:
Enter Passphrase for keystore:
jar signed.
Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a
timestamp, users may not be able to validate this jar after the signer
certificate's expiration date (2015-12-09) or after any future revocation date.
我很确定这个错误可以忽略不计。这可能会在以后引起问题,但我们只想立即启动并运行。
以下是包含嵌入式applet的页面的html:
<html>
<body>
<applet code='battleShip.WindowApplet'
archive='signed-BattleShip.jar'
width=500
height=500>
</applet>
</body>
</html>
以下是我们工作目录的服务器端ls,其中包含applet页面battle.html
和applet signed-BattleShip.jar
:
-rw-rw-r-- 1 www-data www-data 12136 Dec 5 21:57 back.jpg
-rw-r--r-- 1 www-data www-data 195 Dec 9 14:25 battle.html
-rw-rw-r-- 1 www-data www-data 116 Dec 9 12:59 index.html
-rw-r--r-- 1 www-data www-data 27509 Dec 10 12:19 signed-BattleShip.jar
无论我们尝试什么,我们总是得到这个提示:
到目前为止,我们已经尝试了以下所有方法:
我们认为这与那些不再是“媒体”有关。 java控制面板中的选项。我们只是想让一些东西得到运行,任何帮助都会非常感激。
答案 0 :(得分:1)
最后让我的applet在经过几个小时的乱搞后才能工作。希望这对你有用,并让其他人免于数小时的挫折:
我的清单文件包括以下内容:
清单 - 版本:1.0 权限:沙箱 应用程序名称:您的应用程序名称转到此处 (空行)
我的HTML文件包括:
至于将域添加到站点例外列表中,NOTHING一直工作,直到我以这种格式添加域:
http://mywebsite.com/ (请注意,它没有www。并且在最后包含正斜杠。没有其他组合适用于我。)
确保将清单文件包含在jar中。我使用Eclipse Juno,当您导出到JAR时会找到此功能。我将manifest.txt文件放在主类所在的src目录中。我尝试了其他清单属性,如Codebase和Entry-Point等,但那些也给我带来了问题,所以我删除了它们。
我的游戏目前运行完美,除了一个问题 - 声音。网络版没有播放声音,虽然它们在日食时运行良好。我对目前的情况感到满意,并且无论如何都为该项目获得了A ......所以我稍后会修复声音问题。
希望这有帮助!
之前发布了以下内容,但由于不是答案而被删除(但我确实按照承诺回复了答案)。 Mods,如果你愿意,可以删除它,但我认为一些背景可能会帮助其他访问者识别他们所遇到的问题。
我处于完全相同的位置。我本周有一个最终项目(也是一个游戏),我无法加载我的applet。
现在正在研究几个小时,但仍然陷入困境。奇怪的是,我测试了一个简单的“Hello World”小程序,它只是在屏幕上打印字符串,而且运行正常。我还尝试运行一个包含多个类的applet来查看是否会导致任何问题,但是运行正常。然后我尝试在jar文件中运行相同的applet,这也很有用。
试图以极高的希望装载我的游戏但是被压垮看到java阻止了它。有趣的是,我现在不能再运行简单的小程序......
不确定这意味着什么。无论是java的安全卫士都有错误,或者如果网站由于一个“威胁”而被标记,它会关闭来自同一域的所有applet。我尝试将域的所有变体添加到例外站点列表中无济于事。
我会继续尝试,因为我的成绩取决于它 - 如果我能找到解决办法,我会在这里发帖。
我正在运行win7 64位,java 8更新25(1.8.0),浏览器 - chrome,即x86,ie64,applet编译并在Eclipse 64bit中运行良好。我的游戏包括大约18个类,以及一堆png,gif和wav文件。这些类都不会产生任何外部url / http请求或类似的任何内容。
答案 1 :(得分:0)
我收到了与John相同的错误消息,但我的applet已存在于网页中,并非由我开发。我不明白给出的任何内容(jar文件和清单)所以我寻找一个更简单的选项。对于那些不太了解语言并解决限制的人:
让例外列表接受设置的方法是以管理员身份运行它。下面的链接指定作为管理员运行命令提示符并打开控制面板。 :
https://www.java.com/en/download/help/javacpl.xml
我采取的步骤:
执行这些步骤后,添加例外是成功的。
答案 2 :(得分:0)
经过长时间的捣乱,我前几天偶然发现了答案。希望这会节省一些时间。
Java 8不再支持运行自签名或未签名小程序所需的
<div data-ng-switch="getModuleType(module,code)"> <!-- ngSwitchWhen: module1 --> <!-- ngSwitchWhen: module2 --> <!-- ngSwitchWhen: module3 --> <!-- ngSwitchWhen: module4 --> <!-- ngSwitchWhen: module5 --> <div data-ng-switch-when="module5" class="ng-scope"> </div><!-- end ngSwitchWhen: --> </div>
安全级别。
我的解决方案是从我的机器上完全卸载Java 8并使用Java 7重新安装。然后我打开了我的Java设置:
安装Java 7后,您应该能够选择中等安全性选项。这将允许您在安全提示后运行小程序,告诉您即将运行未签名的小程序。
答案 3 :(得分:-3)
我刚刚遇到同样的问题。您需要做的是确保您拥有最新版本的Java。然后,您需要查找“Java控制”面板。根据您拥有的操作系统类型,java网站会告诉您。然后只需访问Java控制面板中的SECURITY选项卡,并将特定网站添加到&#34;例外站点列表&#34;然后单击编辑站点列表。从HTTPS开始:只需添加网站......真的很糟糕。