求采春旁脊纳
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。
2.调用外部javac命令将该文件编译。
3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该携毁类,然后就可以正常答隐渣使用了。
上面的每一清悄步都能在baidu中找到实现方法,自己发挥吧。
(Write once, run anywhere) 目标Java类文件包含字节代码同平台JVM所使用Java字节代码仅文件形式存于磁盘通网络式载存于内存JVM类加载器负责包含字节代码字节数组(byte[])定义Java类某些情况能需要态 Java字节代码或已Java字裂让咐节代码进行修改候需要用本文要介绍相关技术首先介绍何态编译Java源文件肆纯态编译Java源文件
般情况发员都程序运行前编写完全部Java源代码并且功编译些应用说Java源代码内容运行刻才能确定候需要态编译源代码Java字节代码再由JVM加载执行典型场景算竞赛线评测系统(PKU JudgeOnline)允许用户传Java代码由系统台编译、运行并进行判定态编译Java源文件使用做直接程序调用Java编译器
JSR 199引入Java编译器API使用JDK 6通API态编译Java代码比面代码用态编译简单Hello World类该Java类代码保存字符串滑中
public class CompilerTest {
public static void main(String[] args) throws Exception {
String source = "public class Main { public static void main(String[] args) {System.out.println(\"Hello World!\")} }"
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler()
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)
StringSourceJavaObject sourceObject = new CompilerTest.StringSourceJavaObject("Main", source)
Iterable fileObjects = Arrays.asList(sourceObject)
CompilationTask task = compiler.getTask(null, fileManager, null, null, null, fileObjects)
boolean result = task.call()
if (result) {
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)