在JSF中执行Cmd命令

问题描述:

我想编译一个输入文本并使用一个托管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

你可能想使“/ 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