![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
JAVA如何在运行时编译一个类?
比如:publicclasstest{Stringstr="publicclasstest1{static{System.out.println(\"inittest1\...
比如:
public class test{
String str = "public class test1{static{System.out.println(\"init test1\")}}";
}
怎样将str中的代码编译成一个.class文件 ? 展开
public class test{
String str = "public class test1{static{System.out.println(\"init test1\")}}";
}
怎样将str中的代码编译成一个.class文件 ? 展开
2个回答
展开全部
使用jdk1.6提供的JavaCompiler类。使用时一定要保证你的classpath的jre是jdk1.6,不能是纯jre,不然会出问题。
public class test{
String str = "public class test1{static{System.out.println(\"init test1\")}}";
String fileName =
"d:/src/test1.java";//路径随便写
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write(src);
fw.flush();
fw.close();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null, null, null);
Iterable units = fileMgr.getJavaFileObjects(fileName);
CompilationTask t = compiler.getTask(null, fileMgr, null, null, null, units);
t.call();
fileMgr.close();
}
public class test{
String str = "public class test1{static{System.out.println(\"init test1\")}}";
String fileName =
"d:/src/test1.java";//路径随便写
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write(src);
fw.flush();
fw.close();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null, null, null);
Iterable units = fileMgr.getJavaFileObjects(fileName);
CompilationTask t = compiler.getTask(null, fileMgr, null, null, null, units);
t.call();
fileMgr.close();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询