【问题标题】:Java Error: "Your security settings have blocked a local application from running"Java 错误:“您的安全设置已阻止本地应用程序运行”
【发布时间】:2013-04-18 06:22:55
【问题描述】:

我正在尝试从我的浏览器 (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 项目。运行小程序的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 运行小程序,它可以工作。但是当我通过双击运行 HTML 代码时,浏览器会弹出以下消息:

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

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

此消息在上次 Java 更新后开始出现。问题出在哪里?

【问题讨论】:

    标签: java security applet


    【解决方案1】:

    看完Java 7 Update 21 Security Improvements in Detail 提..

    随着引入的更改,很可能没有最终用户能够在自签名或未签名时运行您的应用程序。

    ..我想知道这对于松散的类文件(所有“最简单”的小程序)将如何处理。

    本地文件系统


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

    当 JRE 设置为默认的“高”安全设置时,由 本地文件系统 加载的松散类文件组成的小程序出现的对话框。


    请注意,JRE 的一个小怪癖仅在第 3 点产生。

    1. 加载小程序页面以查看导致空控制台的损坏小程序符号。
      打开 Java 设置并将级别设置为
      关闭浏览器和 Java 设置。
    2. 加载小程序页面以查看小程序。
      打开 Java 设置并将级别设置为
      关闭浏览器和 Java 设置。
    3. 加载小程序页面以查看损坏的小程序符号& 上面的对话框。

    互联网

    如果您从 internet 加载 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 开始。

    • 非常高最安全的设置 - 仅允许运行由受信任机构的未过期证书标识的 Java 应用程序。
    • 高(推荐的最低值)将允许运行由受信任机构颁发的证书标识的 Java 应用程序。
    • - 所有 Java 应用程序在出现安全提示后都将被允许运行。

    【讨论】:

    • 谢谢!实际上我也在用 SDK6 编译(我不知道为什么)。
    • 如果有助于解决问题,请accept回答。
    • @Andrew Thompson 有没有办法修改松散的类文件,如果它们位于实际受信任的站点上,则使它们受信任?
    • @ChristopherBruce No.
    • 请注意,Oracle 现在已经删除了 Medium Java 安全设置。引用java.com/en/download/help/jcp_security.xml:“从 Java 8 Update 20 开始,已从 Java 控制面板中删除了中安全级别。只有高和非常高级别可用。”
    【解决方案2】:

    我今天遇到了同样的问题,我可以通过将 Java 控制面板上的安全设置从 HIGH 更改为 MEDIUM 来解决这个问题。

    好吧,不建议将 Java 安全设置永久设置为 MEDIUM,因为这将允许潜在的恶意软件在您的系统上运行而不会被阻止。因此,我建议在运行您的小程序后,您可能需要将设置改回 HIGH。

    Location of the Java Control Panel

    Change the setting of the Control Panel

    【讨论】:

    • 如果您信任来源,则改为“添加例外”。与摇滚明星的建议相比,我更喜欢这个,因为通常(我认为)我们会忘记更改软件的设置!
    • Per java.com:“从 Java 8 Update 20 开始,已从 Java 控制面板中删除了中安全级别。只有高和非常高级别可用。”
    【解决方案3】:

    如果您使用Linux,则可以使用/usr/bin/jcontrol(或获取当前Java 工具的路径设置)来使用这些设置。您还可以编辑~/.java/deployment/deployment.properties 中的文件以设置“deployment.security.level=MEDIUM”。

    令人惊讶的是,Oracle 网站上并没有现成的这些信息。我想念 java.sun.com...

    【讨论】:

      【解决方案4】:
      1. 转到控制面板
      2. 双击Java
      3. 打开安全标签
      4. 选择中等
      5. 点击应用
      6. 重启网络浏览器

      就是这样!

      【讨论】:

      • 我没有在“安全”选项卡下找到“中”。您使用的是哪种操作系统和 Java 版本?
      • 我同意彼得的说法。我在“安全”选项卡中找不到“中”。
      • 在安全选项卡下,有一个名为“安全级别”的标题。它有 3 个级别:非常高、高和中。
      • 从java 8开始没有Medium
      【解决方案5】:

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

      1. 在浏览器中打开您的小程序并复制地址栏的内容。
      2. 转到 控制面板Java 控制面板安全 选项卡,然后按 编辑站点列表... 按钮。

      3. Add 按钮,插入您的路径并按 Enter。

      4. 在出现的安全警告上按继续

      5. 再次打开小程序,不要忘记在弹出窗口中按运行

      【讨论】:

        【解决方案6】:

        如果您像我一样,在安全选项卡下的 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.下载并安装Windowsoffline installer包。

        【讨论】:

          【解决方案7】:

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

          对我有用的是

          1. 开始程序 --> Java --> 配置 Java...
          2. 转到安全性 --> 编辑站点列表...
          3. 添加http://portecle.sourceforce.net
          4. 在 CMD 提示符下启动 javaws portecle.jnlp

          在第 3 步中,您也可以尝试添加 file:///c:/path/portecle.jnlp,但此添加对我的情况没有帮助。

          【讨论】:

          • 从您的 PC 上的某个位置怎么样?我有版本 8 的 Windows 10(不确定这是否重要)。用户界面有点错误,不允许我添加目录。
          • 好的,想通了。不得不用,“file:///”我加了一个答案。
          【解决方案8】:

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

          似乎只允许在 IE11 中运行小程序,并且正如其他人所提到的,您必须将小程序添加到例外列表中。我的问题是因为我将它们存储在本地,并在 IE 中打开它们,它以“C:\...”开头的路径打开其他答案对我不起作用。

          修复: 所以,我只是在异常站点列表中添加了(不带引号)“file:///”,最后让它工作了。这也允许我运行本地存储的任何小程序,并且我不必为每个小程序路径显式添加异常。

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

          【讨论】:

            【解决方案9】:

            Java 小程序确实会带来安全风险,因此在大多数现代浏览器中都被禁用。您必须降低安全性才能运行它。有一个guide by Oracle

            【讨论】:

            • 我尝试将安全级别设置为最小值,但没有成功。上次 Java 更新后出现问题。在一切正常之前。
            • 解决:问题是编译器使用JDK6而不是JDK7。
            • 请注意阅读此内容的未来类似我的人:如果(在您 javac-首先编译类文件的命令行中)java -version 命令告诉您您正在已经运行最新版本,那么您可能需要从appwiz.cpl 列表中完全卸载所有“Java”,然后重新启动计算机并从全新下载中重新安装最新的 JDK,然后 进入 Java 控制面板并将安全性向下滑动到“中等”。
            【解决方案10】:
            • 从 Java 8 开始,Java 下的“安全”选项卡中没有“中等”风险设置

            • 在您恢复到较旧的 Java 之前,您将不断收到此错误(建议使用 Java 7,但它已经到了生命的尽头)。

            • 同时安装 32 位和 64 位版本,因为浏览器仍然是 32 位,即使在 64 位机器、64 位操作系统上也是如此

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-01-24
              • 2014-11-13
              • 1970-01-01
              相关资源
              最近更新 更多