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

我试图运行从我的浏览器( 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编译了它,然后创build了一个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运行小程序,则可以运行。 但是当我通过双击运行HTML代码时,浏览器会popup以下消息:

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

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

这条消息在Java的最后更新之后开始出现。 哪里有问题?

阅读Java 7 Update 21中的详细安全性改进之后

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

..我想知道如何去松散的类文件 – 所有的“最简单”的小程序。

本地文件系统

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

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


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

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

互联网

如果你加载在这个可resize的小程序演示中看到的简单的小程序(松散的类文件)从互联网 – 它拥有一个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> 

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

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

安全设置说明

从Java 7更新51开始。

  • 非常高最安全的设置 – 仅允许来自可信机构的未过期证书所标识的Java应用程序运行。
  • 高(build议最低)允许来自可信机构的证书所标识的Java应用程序运行。
  • 所有Java应用程序都将被允许在提供安全提示后运行。

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

那么,将Java安全设置永久设置为MEDIUM并不是真正的build议,因为这样可以让潜在的恶意软件在您的系统上运行,而不会被阻止。 所以我build议在运行你的applet之后,你可能想把设置改回到HIGH。

Java控制面板的位置

更改控制面板的设置

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

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

  1. 转到控制面板
  2. 双击Java
  3. 打开安全选项卡
  4. select中等
  5. 点击应用
  6. 重新启动您的networking浏览器

而已!

在这里输入图像描述

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

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

  3. 添加button,插入您的path,然后按Enter键。 例外网站列表的屏幕截图

  4. 在出现的安全警告上按继续安全警告 -  FILE位置警报提示的屏幕截图

  5. 再次打开小程序,不要忘记在popup窗口中按下“运行”安全警告的截图

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


症状:

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

原因

这是由于Java 7u10及以上版本与JavaFX的独立安装之间的冲突。 示例:如果安装了Java 7u5和JavaFX 2.1.1,并且Java更新为7u11,则Java控制面板不显示checkbox或安全性滑块。

parsing度

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

Java小程序会造成安全风险,因此在大多数现代浏览器中都是禁用的。 你必须降低安全性来运行它。 Oracle为此提供了一个指导 。

  • 从Java 8开始,Java下的“安全性”选项卡中没有“中等”风险设置

  • 你将继续得到这个错误,直到你恢复到旧的Java(build议Java 7,它已经达到尽头)。

  • 同时安装32位和64位版本。 为什么? 因为浏览器仍然是32位的,即使是在64位的机器上,也是64位的操作系统

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

对我有效的是

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

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