7

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

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

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

控制台中的错误

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
4

3 回答 3

4

您的小程序正在尝试从预先授权的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文件。请注意前面的“.” 在文件名中。

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

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

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

  4. 请注意,我指定小程序的所有权限是为了让您入门,但授予所有权限可能不安全。您应该只授予所需的权限。所以,我把它留给你来解决。
于 2012-09-01T14:03:46.020 回答
1

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

另外,小程序JAR文件soutldd.jar路径是正确的吗?

于 2012-08-28T22:37:24.077 回答
0

转到Java preferences->advance并打开 Java控制台,以便您可以查看在 HTML 中加载小程序时发生的情况。

在窗户里

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

于 2012-08-28T22:44:23.967 回答