-2

在标准的 java 程序中,我可以执行以下操作:

import java.io.*;
public class PingApp
{
    public static void main(String args[])
    {
        System.out.println("about to try to launch ping...");
        try
        {
            Process p = Runtime.getRuntime().exec("ping -o google.com"); 
            p.waitFor(); 
            BufferedReader reader=new BufferedReader(
                new InputStreamReader(p.getInputStream())
            );
            String line=reader.readLine(); 
            while(line!=null) 
            { 
                System.out.println(line);
                line=reader.readLine(); 
            }
        }
        catch(IOException e1) {
            System.err.println(e1.getMessage());
        } 
        catch(InterruptedException e2) {
            System.err.println(e2.getMessage());
        } 
        System.out.println("finished.");
    }
}

我想在 java 小程序中做同样的事情,除了将我捕获的输出打印到终端,我想在浏览器的小程序窗口中显示它。

而已。

当我尝试将此代码放入小程序时遇到的错误是:

Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute")

有什么办法可以绕过这个 AccessControlException?

谢谢。

4

2 回答 2

2

这是 Java 的一项安全功能,可阻止您恶意使用用户的终端或等效设备,以及读取或写入驱动器。

解决这个问题的唯一方法是签署小程序。

于 2013-08-08T20:04:31.033 回答
1

您的小程序应首先签名。看一下这个:

Java小程序:从浏览器运行本机代码?

然后使用 Runtime.exec 启动它。

于 2013-08-08T20:03:59.857 回答