【问题标题】:Executing Cmd command in JSF在 JSF 中执行 Cmd 命令
【发布时间】:2013-04-30 00:42:26
【问题描述】:

我想编译输入文本并使用托管 bean 和页面 .xhtml 创建 .exe 文件。但是文件的创建顺利并且.exe​​的创建不起作用 这是托管 bean 代码:

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




}

}

【问题讨论】:

  • 能否提供生成的异常?检查 catalina.out 文件。问候。

标签: java jsf jakarta-ee jsf-2 cmd


【解决方案1】:

您可能希望将“/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) 上有多余的空值?

【讨论】:

  • 不起作用!它仍然会创建 test.c 文件并且不会创建 .exe
  • 它在我使用 jsp 和 servlet 时起作用,这些是我不需要的参数,我只需要我想要执行的 cammande 名称。
  • 为什么你需要包含 cmd 部分,你为什么不直接启动“gcc ....”
猜你喜欢
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多