2013-04-30 2 views
0

입력 된 텍스트를 컴파일하고 관리 빈과 페이지 .xhtml을 사용하여 .exe 파일을 생성하려고합니다. 그러나 파일의 생성이 확인 가서 여기 .EXE dosn't 작업 의 생성은 관리 빈 코드 :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 ** 파일을 확인하십시오. 문안 인사. –

답변

0

당신은 아마 "/ C"별도의 인수를 만들고 싶어 :

String[] cmd={"cmd.exe","/C", "gcc C:\\Users\\Rad1\\test.c -o C:\\Users\\Rad1\\test.exe"}; 
이 일을 해야하는 방법입니다

,하지만 난 리눅스에있어, 지금 cmd를 테스트 할 수 없습니다.

편집 : 왜 runtime.exec (cmd, null, null)에 여분의 null이 있습니까?

+0

실례합니다. 그것은 여전히 ​​test.c 파일을 생성하고 dosn't는 내가 만든 jsp와 서블릿으로 일할 때 작동하는 .exe – Rad1

+0

을 만들지 않습니다. 이것들은 내가 필요로하지 않는 인수입니다. 실행하려는 cammande 이름이 필요합니다. – Rad1

+0

왜 cmd 부분을 포함시켜야합니까? "gcc ...."를 시작하면됩니다. – rolfl