在Java代码中编译一个储存在字符串中的Java代码

3
我是一名有用的助手,可以为您翻译文本。
以下是需要翻译的内容:

可能是重复问题:
Java 5和Java 6中的即时内存java代码编译
在Java文件中使用代码编译Java文件

我有一个“hello world”类,它以程序字符串的形式提供,如下例所示,

public class CompileJavaString {   
  public static void main(String arg[]) {
     String s="public class HelloWorld{ public static void main(String arg[]) ";
     s=s+" { System.out.println(\"Hello World\"); }  } ";
     // this is the complete code of Hello World class taken as an example   

     // code to compile the class Hello World available in string and 
     // generate the HelloWorld.class file required here
  }  

}

有人能帮忙将上述示例中的代码编译为内存字符串吗?


2
将字符串写入 HelloWorld.java 并调用 javac - NPE
2
这里是代码 - Reimeus
2个回答

1
你想要查看 javax.tools.JavaCompiler 和相关类。文档中包含了如何使用它们的示例。
请注意,只有安装了JDK,Java编译器才能正常工作。JRE是不够的。

0

将文件保存为HelloWorld.java并执行以下操作:

  String fileToCompile = "HelloWorld.java";
  JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
  int compilationResult = compiler.run(null, null, null, fileToCompile);
    if(compilationResult == 0){
        System.out.println("Compilation is successful");
    }else{
        System.out.println("Compilation Failed");
    }

编辑

可以查看详细的示例:

http://www.java2s.com/Code/Java/JDK-6/CompilingfromMemory.htm


我不想将它保存到.java文件中,这是我必须完成的真正任务,因为我需要节省写入.java文件和再次读取所消耗的时间。 - adeel iqbal
这可能会有所帮助:http://www.java2s.com/Code/Java/JDK-6/CompilingfromMemory.htm - rai.skumar
它正在产生一个异常。NullPointerException - adeel iqbal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接