2012-10-17 93 views
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文件時,我只是得到一個灰色方塊。

這是因爲安全問題,我什麼都沒有得到?還是因爲代碼中的錯誤?

+0

我不知道,如果你試圖做的是合法的小程序,尤其是未簽名的,給定了他們的沙箱限制另外,你的代碼似乎並不尊重Swing的線程規則。另外,你的錯誤捕捉的缺乏是相當危險的。 –

+2

簡短的答案是** DON'T **。小應用程序的重點在於您對最終用戶系統擁有非常有限的一系列權限,執行外部命令是最爲嚴重的安全問題。使用專用應用程序以及類似[Java Web Start](http://docs.oracle.com/javase/tutorial/deployment/webstart/)來部署它。您仍然會遇到安全問題,但這些解決方案爲客戶提供了一個更清晰的解決方案 – MadProgrammer

+0

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/)進行檢查。 –

回答

0

你必須小心一些事情。

  1. 你必須複製&粘貼HTML文件.bin文件編譯你以後
  2. 你的HTML文件名是Applet和你的類名execute.class所以這意味着你不必包如果u有你必須保存HTML文件,如「PACKAGENAME/execute.class」
  3. 在控制面板/ Java中你必須禁用安全