1

我正在尝试从此链接运行源代码

从 Java 应用程序编译和运行源代码

我安装了 Mingw32 编译器,更改了编译器位置路径,并在 Eclipse 中运行示例 .cpp 文件时出现此错误。

public class C_Compile {
    public static void main(String args[]){

        String ret = compile();
        System.out.println(ret);

    }
        public static String compile()
        {
            String log="";
             try {
                 String s= null;
               //change this string to your compilers location
             Process p = Runtime.getRuntime().exec("cmd /C  \"C:\\MinGW\\bin\\mingw32-gcc-4.6.2.exe\" C:\\MinGW\\bin\\Hello.cpp ");

             BufferedReader stdError = new BufferedReader(new 
                  InputStreamReader(p.getErrorStream()));
             boolean error=false;

             log+="\n....\n";
             while ((s = stdError.readLine()) != null) {
                 log+=s;
                 error=true;
                 log+="\n";
             }
             if(error==false) log+="Compilation successful !!!";

         } catch (IOException e) {
             e.printStackTrace();
         }
             return log;
        }


      public int runProgram() 
        {
            int ret = -1;
           try
             {            
                 Runtime rt = Runtime.getRuntime();
                 Process proc = rt.exec("cmd.exe /c start a.exe");
                 proc.waitFor();
                 ret = proc.exitValue();
             } catch (Throwable t)
               {
                 t.printStackTrace();
                 return ret;
               }
           return ret;                      
        }}

错误:

mingw32-gcc-4.6.2.exe: error: CreateProcess: No such file or directory

谁能告诉我在哪里放置我的源 .cpp 文件。谢谢

4

2 回答 2

1

错误消息表明,未找到 gcc 编译器本身。你为什么不使用gcc.exe,而不是mingw32-gcc-4.6.2.exe反正?如果你更新 MinGW,后者将失效!当路径不包含空白字符时,您也不需要在字符串中使用 \"。

您可以将您的 cpp 文件放在您想要的任何位置,并提供该 gcc 的路径。Exec 还应该有一个参数dir,您可以将其设置为 cpp 的目录。

于 2013-02-12T06:46:53.607 回答
1
    public static void CompileCprog(String filename){

        File dir = new File("C://Users//JohnDoe//workspace//Project");

        try {  
            String exeName = filename.substring(0, filename.length() - 2);
            Process p = Runtime.getRuntime().exec("cmd /C gcc " + filename + " -o " + exeName, null, dir);  
//          Process p = Runtime.getRuntime().exec("cmd /C dir", null, dir);  
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));  
            String line = null;  
            while ((line = in.readLine()) != null) {  
                System.out.println(line);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }   
    }

这对我来说非常有效。

“dir”变量可以设置为您想要的任何位置。

第一个“p”进程编译一个程序,并在您正在编译的程序的同一位置生成一个同名(减去 .c)的 .exe 文件。

如果您的命令有输出,则可以使用缓冲阅读器。如果您将命令字符串更改为 .exec("cmd /C dir"); 结果将打印在输出中。(我使用日食)

于 2014-09-19T14:35:14.270 回答