编译器编译其他java文件

时间:2013-11-15 06:12:12

标签: java eclipse compilation

我正在尝试从java代码编译和运行java文件。 我有一个编译过的java类,用这个,尝试编译java代码。 下面是我的代码,但我没有在bin(在eclipse项目输出文件夹中)或源位置看到* .class文件。如果我的编译器成功,我的* .class文件已经去了哪里。或者我的代码有什么问题?尝试以下两种方式:

public class CompilerClass {  

    public static void main(String[] args) throws Exception {  

             Process p = Runtime.getRuntime().exec("javac com.java.Compileable.java");
             ProcessBuilder pb = new ProcessBuilder("javac", "com.java.Compileable.java");
    }  
}  

3 个答案:

答案 0 :(得分:2)

作为替代方案,您可以使用java编译器API

package javacompiler;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
public class COmpilerHello {
    public static void main(String[] args)
    {
        String s="C:/Users/MariaHussain/Desktop/hussi.java";
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        int result = compiler.run(System.in,System.out,System.err,s);
        System.out.println("Compile result code = " + result);
    }
}

答案 1 :(得分:0)

使用与CompilerClass

相同的目录中的文件对其进行测试
public static void main(String[] args) throws Exception {  

         Process p = Runtime.getRuntime().exec("javac SomeClass.java");
         ProcessBuilder pb = new ProcessBuilder("javac", "SomeClass.java");
}  

对我来说很好。 SomeClass.javaCompilerClass

位于同一目录中

从命令行跑出

答案 2 :(得分:0)

您必须说明文件的位置。它应该是这样的

public static void main(String[] args) throws Exception {  

         Process p = Runtime.getRuntime().exec("javac C://JavaProject//SomeClass.java");
         ProcessBuilder pb = new ProcessBuilder("javac", "C://JavaProject//SomeClass.java");
}