基本上,我想做两件事:
我知道这是可能的,因为我的一位前辈已经做到了,但我不知道他是怎么做到的。也许他使用了Java的内置类之一。
注意:用户会将代码写入某个文本文件,然后我将该文件内容存储在某个变量中,然后运行该代码。
答案 0 :(得分:5)
是的,有可能。
第1步:编译代码
使用ProcessBuilder或Runtime构造一个Process,Java编译器在其中编译代码。 (请注意,这需要在运行时在系统上提供Java编译器。)
第2步:调用他们的代码
有两种方法可以调用它们的代码。您可以再次使用ProcessBuilder或Runtime对象来构造执行其Java代码的过程。您可以使用Process的getInputStream和getOutputStream函数来读取和写入其他进程。另一种方法是,您可以使用Class和各种反射API来加载其代码并直接在Java中执行。
答案 1 :(得分:1)
你需要一些如何调用编译器(如Suns javac),在出现错误时解析其输出并动态加载生成的类。
Java运行时库中没有API类可以解析,编译和运行Java源代码。
答案 2 :(得分:0)
如果您想要一个interpreter(因此,无需编译),请查看BeanShell。
我非常喜欢这个!
答案 3 :(得分:0)
您可以使用在JVM之上运行的脚本语言。 Groovy是一个非常好的主意,它与Java相比具有非常相似的语法。