我正在尝试从浏览器(Chrome)运行这个用Java编写的简单HelloWorld代码:
public class HelloWorld extends JApplet {
public void init() {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
JLabel lbl = new JLabel("Hello World");
add(lbl);
}
});
}
catch (Exception e) {
System.err.println("createGUI didn't complete successfully");
}
}
我用NetBeans编译它,然后我创建了一个WebApplication项目。运行applet的HTML代码是:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><applet code="HelloWorld" archive="applet_HelloWorld.jar" width="590" height="530"></applet></p>
</body>
</html>
如果从NetBeans运行applet,它可以工作。但是当我通过双击运行HTML代码时,会从浏览器中弹出以下消息:
您的安全设置已阻止本地应用程序运行。
我尝试使用Internet Explorer和Firefox,但没有尝试。
此消息在Java上次更新后开始出现。问题在哪里?
答案 0 :(得分:58)
阅读Java 7 Update 21 Security Improvements in Detail 提及..
通过引入的更改,最有可能的是,无论最终用户是自签名还是未签名,都无法运行您的应用程序。
..我想知道松散的类文件是怎样的 - 所有这些都是'最简单'的小程序。
您的安全设置已阻止本地应用程序运行
当JRE设置为默认的“高”安全设置时,这是一个applet的对话框,其中包含从本地文件系统加载的松散类文件。
请注意,JRE的轻微怪癖只会在.3的第3点产生。
如果您在互联网下加载了resizable applet demo处看到的简单小程序(松散类文件),其中包含applet
元素:
<applet
code="PlafChanger.class"
codebase="."
alt="Pluggable Look'n'Feel Changer appears here if Java is enabled"
width='100%'
height='250'>
<p>Pluggable Look'n'Feel Changer appears here in a Java capable browser.</p>
</applet>
它似乎也成功加载。暗示: -
从本地文件系统加载的小程序现在受到比从互联网或本地服务器加载的安全沙箱更严格的安全沙箱。
自Java 7更新51。
答案 1 :(得分:21)
我今天遇到了同样的问题,我可以通过将Java控制面板上的安全设置从HIGH
更改为MEDIUM
来解决问题。
好吧,不建议永久性地将Java安全设置设置为MEDIUM,因为这将允许潜在的恶意软件在您的系统上运行而不会被阻止。因此,我建议您在运行applet后将设置更改为HIGH。
答案 2 :(得分:12)
就是这样!
答案 3 :(得分:12)
如果您使用的是Linux,则可以使用/usr/bin/jcontrol
(或您的路径设置来获取当前的Java工具)来使用这些设置。您还可以编辑~/.java/deployment/deployment.properties
中的文件以设置“deployment.security.level = MEDIUM”。
令人惊讶的是,Oracle网站无法提供此信息。我想念java.sun.com ......
答案 4 :(得分:8)
如果您没有中等安全级别,则应将应用程序添加到例外站点列表( Java控制面板→安全性选项卡)。
答案 5 :(得分:3)
如果您像“我的安全选项卡”下的“Java控制面板未显示安全性滑块”那样将安全级别从“高”更改为“中”,请按照以下说明操作:Java known bug: security slider not visible。
安装后,启用/禁用Java和安全级别滑块的复选框不会出现在Java控制面板的“安全”选项卡中。 7u10及以上可能会发生这种情况。
这是由于Java 7u10及更高版本与JavaFX的独立安装存在冲突。 示例:如果安装了Java 7u5和JavaFX 2.1.1,并且Java更新为7u11,则Java控制面板不会显示复选框或安全性滑块。
建议在安装Java 7u10及更高版本之前卸载所有版本的Java和JavaFX 请按照以下步骤解决此问题 1.通过Windows卸载控制面板删除所有版本的Java和JavaFX。有关uninstalling Java的说明 2.运行Microsoft卸载实用程序以修复损坏的注册表项,以防止程序被完全卸载或阻止新的安装和更新 3.下载并安装Windows offline installer包。
答案 6 :(得分:1)
我的问题是使用Java8在本地运行portecle.jnlp文件。
对我有用的是
在第3步中,您可能还尝试添加file:/// c:/path/portecle.jnlp,但这种添加对我的情况没有帮助。
答案 7 :(得分:0)
Java applet会产生安全风险,因此在大多数现代浏览器中都被禁用。您必须降低安全性才能运行它。对此有一个guide by Oracle。
答案 8 :(得分:0)
从Java 8开始,没有&#34;媒体&#34; Java下的“安全”选项卡中的风险设置
您将继续收到此错误,直到您恢复到较旧的Java(建议的Java 7,它已经达到了生命的终点)。
安装32位和64位版本,因为浏览器仍为32位,即使在64位计算机上,64位操作系统
答案 9 :(得分:0)
我正在使用Java Applets附带的较旧的Data Structure and Algs书籍进行练习。所以我需要在本地存储和运行一些applet。我目前正在运行Windows 10操作系统以及Edge,Chrome和IE11。
运行的applet似乎仅在IE11中被允许,并且正如其他人提到的那样,您必须将applet添加到例外列表中。我的问题是,因为我将它们存储在本地,并在IE中打开它们,所以它的打开路径以“ C:\ ...”开头,使用“ file /// ...”添加完整路径,如其中之一所述。其他答案对我不起作用。
解决方法: 因此,我只是在例外站点列表中添加了(不带引号)“ file:///”,最后使其正常运行。这也使我可以运行本地存储的任何applet,而不必为每个applet路径显式添加异常。
我打算在使用完程序后从列表中删除该异常,并仅在必要时将其重新添加。