Java错误:“您的安全设置已阻止本地应用程序运行”

问题描述 投票:61回答:10

我正在尝试从我的浏览器(qazxsw poi)运行这个用Java编写的简单Hello World代码:

Chrome

我用qazxsw poi编译它,然后我创建了一个Web应用程序项目。运行applet的qazxsw poi代码是:

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运行applet,它可以工作。但是当我通过双击运行HTML代码时,会从浏览器弹出以下消息:

您的安全设置已阻止本地应用程序运行。

我尝试使用Internet Explorer和Firefox,但没有尝试。

在最后一次更新Java之后,此消息开始出现。问题出在哪儿?

java security applet
10个回答
58
投票

看完NetBeans后提..

通过引入的更改,最有可能的是,无论最终用户是自签名还是未签名,都无法运行您的应用程序。

..我想知道松散的类文件是怎样的 - 所有的'最简单的'小程序。

本地文件系统

您的安全设置已阻止本地应用程序运行

这是一个applet的对话框,当JRE设置为默认的“High”安全设置时,该applet包含从本地文件系统加载的松散类文件。


请注意,JRE的轻微怪癖只产生于第3点。

  1. 加载applet页面以查看导致空控制台的损坏的applet符号。 打开Java设置并将级别设置为“中”。 关闭浏览器和Java设置。
  2. 加载applet页面以查看applet。 打开Java设置并将级别设置为“高”。 关闭浏览器和Java设置。
  3. 加载applet页面以查看损坏的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> 元素:

Java 7 Update 21 Security Improvements in Detail 

它似乎也成功加载。暗示: -

从本地文件系统加载的Applet现在受到比从Internet或本地服务器加载的安全沙箱更严格的安全沙箱。

安全设置说明

自Java 7更新51。

  • 非常高:最安全的设置 - 只允许运行来自受信任机构的非过期证书标识的Java应用程序。
  • 高(建议的最小值):允许运行来自受信任机构的证书标识的Java应用程序。
  • 中 - 在提示安全提示后,将允许所有Java应用程序运行。

0
投票

我正在使用Java Applets附带的旧数据结构和Algs书籍进行练习。所以我需要在本地存储和运行一些applet。我目前正在运行带有Edge,Chrome和IE 11的Windows 10操作系统。

似乎只允许在IE11中运行applet,正如其他人提到的那样,你必须将applet添加到例外列表中。我的问题是因为我在本地存储它们,并在IE中打开它,它以“C:\ ...”开头的路径打开。使用“file /// ...”添加完整路径,就像在其中一个中提到的那样其他答案对我不起作用。

修复:所以,我刚刚添加(没有引号),“file:///”到异常站点列表,最后让它工作。这也允许我运行本地存储的任何applet,而且我不必为每个applet路径显式添加异常。

我计划在使用完程序后从列表中删除异常,并且只在必要时将其添加回来。


21
投票

我今天遇到了同样的问题,我能够通过将Java控制面板上的安全设置从resizable applet demo更改为applet来解决问题。

好吧,不建议永久性地将Java安全设置设置为MEDIUM,因为这将允许潜在的恶意软件在您的系统上运行而不会被阻止。因此,我建议您在运行applet后将设置更改为HIGH。

<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>

HIGH


12
投票

如果您使用的是MEDIUM,可以使用Location of the Java Control Panel(或您的路径设置来获取当前的Java工具)来使用这些设置。您还可以编辑Change the setting of the Control Panel 中的文件以设置“deployment.security.level = MEDIUM”。

令人惊讶的是,Oracle网站无法提供此信息。我想念java.sun.com ......


12
投票
  1. 转到“控制面板”
  2. 双击Java
  3. 打开“安全”选项卡
  4. 选择中
  5. 单击“应用”
  6. 重新启动Web浏览器

而已!


8
投票

如果您没有中等安全级别,则应将应用程序添加到“例外站点列表”(Java控制面板→“安全”选项卡)。

  1. 在浏览器中打开您的小程序并复制地址栏的内容。
  2. 转到控制面板→Java控制面板→安全选项卡,然后按编辑站点列表...按钮。
  3. 按“添加”按钮,插入路径并按Enter键。
  4. 在出现的安全警告上按继续。
  5. 再次打开applet,不要忘记在弹出窗口中按Run。 Linux

3
投票

如果您像我的Java控制面板没有在安全选项卡下显示安全性滑块以将安全级别从高更改为中,请按照以下说明操作:/usr/bin/jcontrol


Symptoms:

安装后,“Java控制面板安全性”选项卡中不会显示启用/禁用Java和安全级别滑块的复选框。 7u10及以上可能会发生这种情况。

Cause

这是因为Java 7u10及更高版本与JavaFX的独立安装存在冲突。示例:如果安装了Java 7u5和JavaFX 2.1.1,并且Java更新为7u11,则Java控制面板不会显示复选框或安全性滑块。

Resolution

建议在安装Java 7u10及更高版本之前卸载所有版本的Java和JavaFX。 请按照以下步骤解决此问题。 1.通过Windows卸载控制面板删除所有版本的Java和JavaFX。关于~/.java/deployment/deployment.properties的说明。 2.运行Microsoft卸载实用程序以修复损坏的注册表项,以防止程序被完全卸载或阻止新的安装和更新。 3.下载并安装Windows screenshot of Security Warning软件包。


1
投票

我的问题是使用Java8在本地运行portecle.jnlp文件。

对我有用的是

  1. 启动程序 - > Java - >配置Java ...
  2. 转到安全性 - >编辑站点列表...
  3. 添加Java known bug: security slider not visible
  4. 在CMD提示符下启动javaws portecle.jnlp

在第3步,您可能还尝试添加file:/// c:/path/portecle.jnlp,但这个添加对我的情况没有帮助。


0
投票

Java applet会产生安全风险,因此在大多数现代浏览器中都被禁用。您必须降低安全性才能运行它。有一个uninstalling Java


0
投票
  • 从Java 8开始,Java下的“安全”选项卡中没有“中等”风险设置
  • 你将继续得到这个错误,直到你恢复到旧的Java(建议Java 7,它已经达到了生命的尽头)。
  • 安装32位和64位版本,因为浏览器仍然是32位,即使在64位机器上,64位操作系统
© www.soinside.com 2019 - 2024. All rights reserved.