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

use*_*697 61 java security applet

我正在尝试从我的浏览器(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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我用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>
Run Code Online (Sandbox Code Playgroud)

如果从NetBeans运行applet,它可以工作.但是当我通过双击运行HTML代码时,会从浏览器弹出以下消息:

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

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

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

And*_*son 58

阅读Java 7 Update 21详细安全改进后提到..

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

..我想知道这将如何用于松散的类文件 - 所有的"最简单"的小程序.

本地文件系统

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

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


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

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

互联网

如果您在互联网上加载这个可调整大小的小程序演示中看到的简单小程序(松散类文件)- 它拥有以下元素: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>
Run Code Online (Sandbox Code Playgroud)

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

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

安全设置说明

自Java 7更新51.

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

  • 请注意,Oracle现已删除了Medium Java安全设置.引自https://www.java.com/en/download/help/jcp_security.xml:"从Java 8 Update 20开始,已从Java控制面板中删除了中等安全级别.仅高级别和非常高级别是可用". (9认同)
  • 请[接受](http://meta.stackexchange.com/a/65088/155831)答案,如果它有助于解决问题. (5认同)

roc*_*tar 21

我今天所面临的同样的问题,我能够通过改变Java控制面板上的安全设置来解决该问题HIGHMEDIUM.

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

Java控制面板的位置

更改控制面板的设置

  • 每个java.com:"从Java 8 Update 20开始,已从Java控制面板中删除了中等安全级别.只有高级别和非常高级别可用." (5认同)

Bur*_*RAS 12

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

而已!

在此输入图像描述

  • 我在安全选项卡下找不到"中".您使用的是哪个操作系统和哪个版本的Java? (8认同)
  • 从java 8开始,不再有Medium (4认同)

小智 12

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

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


Pav*_*ych 8

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

  1. 在浏览器中打开您的小程序并复制地址栏的内容. 地址栏中applet地址的屏幕截图
  2. 转到控制面板Java控制面板安全选项卡,然后按Edit Site List...按钮. Java控制面板的

  3. Add按钮,插入路径并按Enter键. 异常站点列表的屏幕截图

  4. 按下Continue出现的安全警告. 安全警告 - 文件位置警报提示的屏幕截图

  5. 再次打开小程序,不要忘记按下Run弹出窗口. 安全警告的屏幕截图


Pra*_*ati 0

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