我有一个applet,它必须在同一台服务器上exec
一个程序。
Runtime c = Runtime.getRuntime();
window.finishedQuery("Got Runtime...");
Process p = c.exec(String.format("cmd");
window.finishedQuery("Excecuted CMD");
第二行在浏览器中不起作用,但在Netbeans applet查看器中它可以。
window
是我的applet,它确实显示got runtime
但不显示excecuted CMD
。
在Google Chrome中,我看到以下消息:
access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute")
我想小程序“认为”我想要访问用户PC /程序,但我想在服务器上启动程序。
我该怎么做?
答案 0 :(得分:2)
如果由applet创建,Process
将在客户端计算机的JVM中创建。该VM将无法调用服务器上的方法。
解决这个问题的最佳方法是让沙盒子applet在它所来自的同一主机上调用web服务(servlet,JSP,PHP,ASP ..)。让Web服务创建Process
1 ,并将输出提供给applet以供消费/显示。
1。
另外,请阅读runtime.exec Wiki&amp;中链接的Java World文章。实施所有建议,但1.5岁以上使用ProcessBuilder
来创建Process
。
答案 1 :(得分:0)
好吧,我写了一个服务来创建流程并通过wsimport创建了一个“客户端类”... netbeans applet管理器中的一切正常,但是当我在浏览器中启动applet时,applet不会请求服务即使我将我的applett放在本地网络服务器(xampp)上并在同一客户端上启动该服务。我想如果两者都在同一个客户端,我不必签署我的applet? (请注意我是否必须将此问题作为新问题或我的问题的答案......)