2013-04-30 4 views
0

Я хочу скомпилировать входной текст и создать файл .exe с помощью управляемого компонента и страницы .xhtml. Однако создание файла пошло Ok и создание .exe dosn't работу здесь является управляемым кодом боба:Выполнение команды Cmd в JSF

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"}; 

Вот как это должно работать, но я на Linux, не может проверить Cmd прямо сейчас.

Редактировать: почему у вас есть дополнительные значения null в runtime.exec (cmd, null, null)?

+0

не работает! он по-прежнему создает файл test.c и не создает файл .exe – Rad1

+0

, он работал, когда я работал с jsp и сервлетами, и это аргумент, который мне не нужен, мне просто нужно имя cammande, которое я хочу выполнить. – Rad1

+0

Зачем вам вообще нужно включать часть cmd, почему бы вам просто не запустить gcc ...? – rolfl

Смежные вопросы