package com.liming.dynamiccompile;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class DynamicCompile {
public static void main(String[] args){
System.out.println("Hello DynamicCompile");
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
if(0 == javaCompiler.run(null,null,null,"res/HelloWorld.java")){
try {
URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{new URL("file://"+System.getProperty("user.dir")+"/res/HelloWorld")});
Class<?> xlass = urlClassLoader.loadClass("HelloWorld");
Constructor<?> c = xlass.getConstructor();
Object o = c.newInstance();
Method m = xlass.getMethod("main", String[].class);
Object[] argx = {new String[]{"人在江湖飘飘","飞出恩怨两刀","江湖飘"}};
m.invoke(o,argx);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
}
Java动态编译的使用
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Java项目编译时出现"请使用 -Xlint:unchecked 重新编译"提示信息时的解决方法 提示信息如下: ...
- 让java变成脚本语言 - Ken-专注后端技术 - ITeye技术网站http://janeky.iteye.c...
- 1. 官方Feature 243:Java-Level JVM CompilerInterface 295:Ahe...
- 探索kotlin与Java之间的关系,Java和kotlin之间互操作,kotlin为什么可以在jvm上面运行。 ...