4

我正在尝试从小程序中读取环境变量,这是我的代码

    String env = System.getenv("TWS");
    System.out.println(env);
    Runtime rt = Runtime.getRuntime();
    String s = env + "\\WebStart.bat " ;
    System.out.println(s);
    try {
        Process p = rt.exec(s);
    } catch (Exception e) {
    }

当我通过右键单击并运行从 netbeans 运行代码时,它运行没有问题。

但是当我把它放到一个 jar 文件中时,将它添加到我的 web 应用程序中并尝试使用以下代码从 html 页面运行它

<applet code="draw.class" archive='AppletTest.jar'>
   <param name="shape" value="triangle"/>
</applet>

我收到一条错误消息,提示访问被拒绝,java.lang.RuntimePermission

我正在使用 tomcat 6 运行这个 Web 应用程序。

我已经阅读了一些指南并将以下条目添加到 tomcat 6 中的 catalina.policy 文件并重新启动了 tomcat

permission java.lang.RuntimePermission "accessDeclaredMembers";

但仍然是同样的警告。有人可以为这个问题提出一个解决方案吗?

--rangana

4

1 回答 1

3

从 netbeans 运行 applet 时,Java 虚拟机在与通过浏览器运行时不同的安全机制下运行它。

通过浏览器下载的未使用安全证书签名的小程序被认为是不受信任的,称为未签名的小程序。在客户端上运行时,未签名的小程序在仅允许一组安全操作的安全沙箱中运行。您可以使用SecurityManager检查是否向您的小程序授予了特定权限。例如在您的情况下:

System.getSecurityManager().checkPermission(new RuntimePermission("accessDeclaredMembers"));

您可以在此处此处了解有关小程序安全性的更多信息。可以在此处找到有关制作签名小程序的非常好的教程。

于 2012-06-12T08:15:01.590 回答