【问题标题】:Use applet in html?在 html 中使用小程序?
【发布时间】:2018-09-20 12:50:35
【问题描述】:

我想在 html 文档中使用这个小程序this applet。在本网站的示例中,他们使用:

<applet code="de.wim.outldd.examples.DragDropTest_Applet"
    width="150" height="150" alt="Applet1" archive="soutldd.jar">
</applet>

当我尝试它时它不起作用。我的 HTML 文档位于提取目录的中间。如何在html中使用applet,有人请试试这个。

控制台中的错误

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ExceptionInInitializerError
    at de.wim.outldd.OutlookDD.init(OutlookDD.java:73)
    at de.wim.outldd.examples.DragDropTest_Applet$1.run(DragDropTest_Applet.java:29)
    at java.security.AccessController.doPrivileged(Native Method)
    at de.wim.outldd.examples.DragDropTest_Applet.<init>(DragDropTest_Applet.java:26)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission java.io.tmpdir read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at de.wim.outldd.OutlDDNativeLib.loadDllFromResource(OutlDDNativeLib.java:135)
    at de.wim.outldd.OutlDDNativeLib.loadDll(OutlDDNativeLib.java:104)
    at de.wim.outldd.OutlDDNativeLib.<clinit>(OutlDDNativeLib.java:62)
    ... 19 more
Exception: java.lang.RuntimeException: java.lang.ExceptionInInitializerError

【问题讨论】:

  • 什么是损坏的小程序的 URL?启动时是否会提示您信任数字签名代码?小程序是否仅适用于 Windows?

标签: java html applet


【解决方案1】:

您的小程序正在尝试从预授权的 java.io.tmpdir 系统属性中读取临时目录值。由于安全原因,Applet 在权限受限的沙盒环境中运行。要修复它,请覆盖默认安全策略以允许您的小程序通过设置属性权限 - java.util.PropertyPermission 来读取该属性。要覆盖默认权限,请在用户主目录的 .java.policy 文件中定义策略。建议您编辑用户特定的策略文件,而不是 JRE 安全目录下的全局策略文件。请参考以下模板:

grant codeBase "<code base>" { 
   permission <type> "<target>", "<actions>"; 
   permission <type> "<target>", "<actions>"; 
   ... 
}; 

For eg. 
grant codeBase "http://geosim.cs.vt.edu/geosim/-" { 
  permission java.util.PropertyPermission "java.io.tmpdir", "read";
  ... 
}; 

编辑:


我注意到您已经在顶部的帖子中指定了小程序链接。因此,我将提供一个分步指南来帮助您入门。

给你 -

  1. 将 $JRE_HOME/lib/security/java.policy 文件复制到您的用户主目录(在 Windows 上是 c:\users\)作为 .java.policy em> 文件。 请注意前面的“.”在文件名中。

  2. 将以下行添加到 .java.policy 文件的末尾:

    授予 codeBase "http://www.wilutions.com/outldd/-" {
    权限 java.security.AllPermission; };

  3. 如下在appletviewer 中运行applet,看看它是否有效。 小程序查看器http://www.wilutions.com/outldd/example.html

  4. 请注意,我指定小程序的所有权限是为了帮助您入门,但授予所有权限可能不安全。您应该只授予所需的权限。所以,我把它留给你解决。

【讨论】:

  • 请确保根据您的环境指定小程序代码库值,否则该策略将不会生效。
  • 这个 java.policy 文件在哪里??
  • 您的全局策略文件 java.policy 位于您的 JRE-home/lib/security/ 目录下。将您的用户主页下的文件复制为 .java.policy 并添加您的策略。
  • 请注意,如果您的小程序尝试任何其他预授权操作,您可能需要酌情授予额外权限。
  • 您的用户主目录。用户主路径是根据“user.home”系统属性设置的。
【解决方案2】:

您是否按照找到here 的指南进行操作,并且您确定指定的路径与您的directory/html 页面相关吗?

还有小程序JAR文件soutldd.jar路径这样对吗?

【讨论】:

  • 源代码中指定的路径实际上是错误的,但我也尝试了正确的路径,它也不起作用。
【解决方案3】:

转到Java preferences-&gt;advance 并打开Java 控制台,这样您就可以看到在HTML 中加载您的小程序时发生了什么。

在窗口中

java 首选项:控制面板 -> java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2012-05-25
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多