2013-04-30 173 views
0

我想編譯一個輸入文本並使用一個託管bean和一個頁面.xhtml創建.exe文件。但是文件的創建就確定和.exe不到風度工作 這裏的創建管理bean代碼:在JSF中執行Cmd命令

package Servlets; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.io.Serializable; 
import javax.faces.bean.ManagedBean; 
@ManagedBean(name = "fichier", eager = true) 
public class Fichier implements Serializable{ 
private String code; 
private String error; 




public String getCode() { 
    return code; 
} 

public String getError() { 
    return error; 
} 
public void setCode(String code) { 
    this.code = code; 
} 

public void setError(String error) { 
    this.error = error; 
} 



public void compile() throws IOException 
{ 


    File file = new File ("C:\\Users\\Rad1\\test.c"); 
    PrintWriter ecrivain; 
    ecrivain = new PrintWriter(new BufferedWriter (new FileWriter(file))); 
    ecrivain.println(code); 
      System.out.print("ecrivain"); 
    ecrivain.close(); 
    try { 
     Runtime runtime = Runtime.getRuntime(); 
     String[] cmd={"cmd.exe","/C gcc C:\\Users\\Rad1\\test.c -o C:\\Users\\Rad1\\test.exe"}; 
     Process p = runtime.exec(cmd,null,null); 
        System.out.print("boucle try"); 
      try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream())); 

      try { 

      String line=null; 

      while((line = reader.readLine()) != null) { 

       error =error+ line + "\n"; 
       } 
      } finally { 
       reader.close(); 
      } 
     } catch(IOException ioe) { 
      ioe.printStackTrace(); 

     } 


     } 
    catch (Exception e) {System.out.println("erreur d'execution"); } 




} 

}

+0

你能提供生成的異常嗎?檢查** catalina.out **文件。問候。 – 2013-04-30 07:45:54

回答

0

你可能想使「/ C」一個單獨的參數:

String[] cmd={"cmd.exe","/C", "gcc C:\\Users\\Rad1\\test.c -o C:\\Users\\Rad1\\test.exe"}; 

這就是它應該工作的方式,但我在linux上,現在無法測試Cmd。

編輯:你爲什麼在runtime.exec(cmd,null,null)上有多餘的null?

+0

dosn't工作!它仍然創建test.c文件,並且不會創建.exe – Rad1 2013-04-30 00:50:33

+0

它在我使用jsp和servlet時工作,這些都是我不需要的參數,我只需要我想執行的cammande名稱。 – Rad1 2013-04-30 00:53:16

+0

爲什麼你需要包含cmd部分,爲什麼不直接啓動「gcc ....」 – rolfl 2013-04-30 01:18:00