2
我試圖在Java程序執行cmd命令執行cmd命令,我想這個代碼在Java小程序
import java.io.InputStream;
import java.io.IOException;
import java.applet.Applet;
import java.awt.*;
public class execute extends Applet{
String output="";
public void init(){
try {
// Execute command
String command = "MYCMDCOMMAND";
Process child = Runtime.getRuntime().exec(command);
// Get the input stream and read from it
InputStream in = child.getInputStream();
int c= in.read();
while ((c = in.read()) != -1) {
output =output+((char)c);
}
in.close();
}
catch (IOException e) {
}
System.out.println(output);
}
public void paint(Graphics g){
g.drawString(output,60,100);
}
}
然後寫了這個HTML文件,並在同一目錄下保存它:
<html>
<head><title>Applet</title>
<body>
<applet code="execute.class",height="200" width="200">
</body>
</html>
我在這裏要做的是在applet中運行ls shell命令並顯示結果。
該代碼編譯沒有錯誤。但是當我在瀏覽器中打開html文件時,我只是得到一個灰色方塊。
這是因爲安全問題,我什麼都沒有得到?還是因爲代碼中的錯誤?
我不知道,如果你試圖做的是合法的小程序,尤其是未簽名的,給定了他們的沙箱限制另外,你的代碼似乎並不尊重Swing的線程規則。另外,你的錯誤捕捉的缺乏是相當危險的。 –
簡短的答案是** DON'T **。小應用程序的重點在於您對最終用戶系統擁有非常有限的一系列權限,執行外部命令是最爲嚴重的安全問題。使用專用應用程序以及類似[Java Web Start](http://docs.oracle.com/javase/tutorial/deployment/webstart/)來部署它。您仍然會遇到安全問題,但這些解決方案爲客戶提供了一個更清晰的解決方案 – MadProgrammer
1)*「這是因爲安全問題,我什麼都沒得到?」*答案將在[Java控制檯](http://www.java.com/en/download/help/javaconsole.xml)。 2)作爲一般技巧,將catch(IOException e){catch(IOException e){e.printStackTrace(); }'3)HTML格式錯誤,請使用[驗證服務](http://validator.w3.org/)進行檢查。 –