在HTML中使用applet?

Bor*_*lis 7 html java applet

我想在html文档中使用这个applet 这个applet.在本网站的示例中,他们使用:

<applet code="de.wim.outldd.examples.DragDropTest_Applet"
    width="150" height="150" alt="Applet1" archive="soutldd.jar">
</applet>
Run Code Online (Sandbox Code Playgroud)

我尝试时它不起作用.我的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
Run Code Online (Sandbox Code Playgroud)

Dro*_*ona 4

您的小程序正在尝试从优先的java.io.tmpdir系统属性中读取临时目录值。由于安全原因,小程序在权限受限的沙箱环境中运行。要修复此问题,请覆盖默认安全策略,以允许您的小程序通过在属性上设置属性权限 - 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";
  ... 
}; 
Run Code Online (Sandbox Code Playgroud)

编辑:


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

干得好 -

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

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

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

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

  4. 请注意,我指定了小程序的所有权限,以便您开始使用,但授予所有权限可能不安全。您应该仅授予所需的权限。所以,我把它留给你去解决。