62

我正在尝试从我的浏览器(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 的最后一次更新后开始出现。问题出在哪里?

4

10 回答 10

59

在阅读Java 7 Update 21 Security Improvements in Detail后提及..

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

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

本地文件系统

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

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


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

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

互联网

如果您从互联网上加载这个可调整大小的小程序演示中看到的简单小程序(松散类文件) - 它拥有以下元素: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 应用程序在出现安全提示后将被允许运行。
于 2013-04-26T00:50:30.250 回答
21

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

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

Java 控制面板的位置

更改控制面板的设置

于 2013-07-30T01:42:42.300 回答
12
  1. 转到控制面板
  2. 双击Java
  3. 打开安全选项卡
  4. 选择
  5. 点击应用
  6. 重新启动您的网络浏览器

而已!

在此处输入图像描述

于 2013-10-24T07:40:04.637 回答
12

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

令人惊讶的是,这些信息在 Oracle 网站上并不容易获得。我想念 java.sun.com...

于 2013-11-15T15:16:27.490 回答
8

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

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

  3. 按下Add按钮,插入您的路径,然后按 Enter。 异常站点列表截图

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

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

于 2015-02-06T13:35:48.133 回答
3

如果您像我一样,其 Java 控制面板未在“安全选项卡”下显示“安全”滑块以将安全级别从“高”更改为“中”,请按照以下说明操作:Java 已知错误:安全滑块不可见


症状:

安装后,启用/禁用 Java 的复选框和安全级别滑块不会出现在 Java 控制面板的安全选项卡中。7u10 及更高版本可能会发生这种情况。

原因

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

解析度

建议在安装 Java 7u10 及更高版本之前卸载所有版本的 Java 和 JavaFX。
请按照以下步骤解决此问题。
1. 通过 Windows 卸载控制面板删除所有版本的 Java 和 JavaFX。卸载 Java的说明。
2. 运行 Microsoft 卸载实用程序来修复损坏的注册表项,这些注册表项会阻止程序被完全卸载或阻止新的安装和更新。
3.下载并安装Windows离线安装包。

于 2014-01-15T19:36:09.507 回答
1

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

对我有用的是

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

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

于 2017-01-17T11:47:24.573 回答
1

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

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

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

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

于 2019-03-29T01:43:43.467 回答
0

Java 小程序确实会产生安全风险,因此在大多数现代浏览器中都被禁用。您必须降低安全性才能运行它。甲骨文为此提供了指南。

于 2013-04-24T15:51:00.897 回答
0
  • 从 Java 8 开始,Java 下的 Security 选项卡中没有“中等”风险设置

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

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

于 2015-06-04T09:00:52.500 回答