java动态编译加载类

不负自心 2017-03-14 03:00:29
public static void main(String[] args) throws IOException,
InstantiationException, IllegalAccessException,
NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
// 编译程序
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
int result = javaCompiler.run(null, null, null, "D:\\test.java");
System.out.println(result == 0 ? "恭喜编译成功" : "对不起编译失败");

File file = new File("D:\\test.class");

URL url = file.toURL();

URLClassLoader loader = new URLClassLoader(new URL[]{url});
try {
Class<?> cls = loader.loadClass("test");
Object obj = cls.newInstance();
Method method = cls.getMethod("main",String[].class);
Object o = method.invoke(obj,new Object[]{args});
System.out.println(String.valueOf(o));
System.out.println("11");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
代码运行到Object o = method.invoke(obj,new Object[]{args});这里的时候就会重头开始再来一直循环,到底是什么原因求大神帮帮忙,谢谢!
或者有什么其他的办法实现类的加载,我需要获得结果!
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
不负自心 2019-05-01
  • 打赏
  • 举报
回复
引用 楼主 qq_24744939的回复:
public static void main(String[] args) throws IOException,
InstantiationException, IllegalAccessException,
NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
// 编译程序
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
int result = javaCompiler.run(null, null, null, "D:\\test.java");
System.out.println(result == 0 ? "恭喜编译成功" : "对不起编译失败");

File file = new File("D:\\test.class");

URL url = file.toURL();

URLClassLoader loader = new URLClassLoader(new URL[]{url});
try {
Class<?> cls = loader.loadClass("test");
Object obj = cls.newInstance();
Method method = cls.getMethod("main",String[].class);
Object o = method.invoke(obj,new Object[]{args});
System.out.println(String.valueOf(o));
System.out.println("11");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
代码运行到Object o = method.invoke(obj,new Object[]{args});这里的时候就会重头开始再来一直循环,到底是什么原因求大神帮帮忙,谢谢!
或者有什么其他的办法实现类的加载,我需要获得结果!
1监控你紫蓝色惧怕过会儿log准老婆这

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧