Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编译和运行C、java和C++中的任意位置的文件? 我正在创建一个编辑器类的应用程序,在这里我要编译和运行当然是创建、编辑、打开C、C++和java文件; 我正在用Java创建它_Java_Compilation - Fatal编程技术网

如何编译和运行C、java和C++中的任意位置的文件? 我正在创建一个编辑器类的应用程序,在这里我要编译和运行当然是创建、编辑、打开C、C++和java文件; 我正在用Java创建它

如何编译和运行C、java和C++中的任意位置的文件? 我正在创建一个编辑器类的应用程序,在这里我要编译和运行当然是创建、编辑、打开C、C++和java文件; 我正在用Java创建它,java,compilation,Java,Compilation,现在,为了编译和运行,我选择了文件的整个路径 并通过此完整路径编译和运行 例如 compileFileCommand = javac /media/disk/eclipse/\/UniversalIDE/Java/FirstJava.java try { System.out.println("Compiling Java File"); Process compileProcess = Runtime.getRuntime().exec(compileFileCommand

现在,为了编译和运行,我选择了文件的整个路径 并通过此完整路径编译和运行

例如

 compileFileCommand = javac /media/disk/eclipse/\/UniversalIDE/Java/FirstJava.java

try
{
    System.out.println("Compiling Java File");
    Process compileProcess = Runtime.getRuntime().exec(compileFileCommand);
            compileProcess.waitFor();
    String line = "";
    BufferedReader bri = new BufferedReader(new InputStreamReader(compileProcess.getInputStream()));
    BufferedReader bre = new BufferedReader(new InputStreamReader(compileProcess.getErrorStream()));
    while ((line = bri.readLine()) != null)
    {
     System.out.println(line);
    }
    bri.close();
    while ((line = bre.readLine()) != null)
    {
     System.out.println(line);
    }
    bre.close();
    compileProcess.waitFor();
    System.out.println("Done Java Compile.");
} catch (Exception e)
{
 // TODO: handle exception
 System.out.println("Exception in Java Compile. ");
 System.out.println(e.getMessage());
}
上面的代码运行良好,并在java文件的位置创建了一个类文件

用于运行Java文件

runFileCommand = java /media/disk/eclipse/\/UniversalIDE/Java/FirstJava
对于运行C&CPP文件,执行相同的过程

用于C编译

String compileFileCommand = "gcc " + fileNameWithFullPath; 
String compileFileCommand = "g++ " + fileNameWithFullPath;
用于C运行

String runFileCommand = "./" + fileNameWithFullPath.split(".c")[0];
用于CPP编译

String compileFileCommand = "gcc " + fileNameWithFullPath; 
String compileFileCommand = "g++ " + fileNameWithFullPath;
用于CPP运行

String runFileCommand = "./" + fileNameWithFullPath.split(".cpp")[0];
我使用与编译java文件相同的代码,但它没有给出任何结果,而bri.readLine始终给出null


请帮助我解决这个问题,并请对我的应用程序提供任何建议。

gcc和g++的默认输出文件名是a.out,而不是没有扩展名的输入文件名

请尝试runFileCommand=./a.out,或者在gcc/g++中使用-o选项来指定输出文件名


此外,在没有错误或警告的情况下,任何编译命令都不会输出任何内容。

bri.readLine返回null,因为当Java文件编译没有错误时,不会将任何内容打印到标准输出。这就是问题所在吗?

如果错误太多且缓冲区已满,编译器将停止,因为在程序完成之前,您不会读取错误,即出现死锁。我会将错误打印到System.err。