Java如何将给定的字符串转成Class对象
给定⼀个定义类的字符串,⽐如“pile; public class Test{ public static void main(String[] args) {System.out.println(\"compile test.\");} }”,怎么将其转换成Class对象呢?下⾯的代码可以实现该功能:
/**
* Java6及以上才可⽤。
* 如果SystemJavaCompiler();返回的是null,说明jre的lib⾥⾯
* 没有tools.jar,要将jdk的lib中的tools.jar复制到jre的lib中。酵母菌形态
* 设计作者: teasp
* 信息描述:
*/
public class CompileTest
{
public final static Class<?> compile(String name, String content)
{
遭受JavaCompiler compiler = SystemJavaCompiler();
StandardJavaFileManager fileManager = StandardFileManager(null, null, null);
StrSrcJavaObject srcObject = new StrSrcJavaObject(name, content);
Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(srcObject);
String flag = "-d";
三毛的作品有哪些
String outDir = Property("ur.dir") + "/bin";
Iterable<String> options = Arrays.asList(flag, outDir);
CompilationTask task = Task(null, fileManager, null, options, null, fileObjects);
boolean result = task.call();
if (result == true)
{
System.out.println("Compile it successfully.");
try
{
return Class.forName(name);
}
catch (ClassNotFoundException e)豆豉鲫鱼
{
e.printStackTrace();
}
/*ClassLoader loader = ClassLoader();
毛字少一横念什么Class<?> cls;
try
{
cls = loader.loadClass(name);
return cls;
}
catch (ClassNotFoundException e)十种最佳降糖食物
{
e.printStackTrace();
}*/
}
return null;
}
public static void main(String[] args)
原地踏步走
{
Class<?> cls = compile("pile.Test",
"pile; public class Test{ public static void main(String[] args){System.out.println(\"compile test.\");} }");
System.out.CanonicalName());
try
{
qq悄悄话
Method method = Method("main", String[].class);
System.out.Name());
method.invoke(null, new Object[]{new String[]{}});
}
catch (Exception e)
catch (Exception e)
{
e.printStackTrace();
}
}
private static class StrSrcJavaObject extends SimpleJavaFileObject
{
private String content;
public StrSrcJavaObject(String name, String content)
{
ate("string:///" + place('.', '/') + sion), Kind.SOURCE); t = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors)
{
return content;
}
}
}