javaCompiler简析
时间:2019-11-07
本文章向大家介绍javaCompiler简析,主要包括javaCompiler简析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
javaCompiler简单来说就是一个用来调用java语言编译器的接口,我们使用它可以实现对其他路径下或者远程代码的编译。
显然我们可以实现这样一种操作,将一串符合java语法的字符串写入一个java文件中。然后利用javaCompiler编译此文件。最后通过
反射的方法实现对此文件的运行(online judge)。
public static void main(String[] args) throws Exception { /** * 将 string 写入Hello.java中 * 通过文件输出流 */ String string = "public class Hello { public static void main(String []args){System.out.println(\"Hello\");}}"; File file = new File("C:\\Users\\Administrator\\Desktop\\temp\\Hello.java"); if (!file.exists()) { file.createNewFile(); } byte[] bytes = string.getBytes(); FileOutputStream stream = new FileOutputStream(file); stream.write(bytes, 0, bytes.length); stream.close(); /** * 编译Hello.java * 通过反射调用main函数实现函数的运行 */ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); int result = javaCompiler.run(null, null, null, "C:\\Users\\Administrator\\Desktop\\temp\\Hello.java"); System.out.println(result == 0 ? "success" : "failure"); URL[] urls = new URL[]{new URL("file:/" + "C:/Users/Administrator/Desktop/temp/")}; URLClassLoader classLoader = new URLClassLoader(urls); Class c = classLoader.loadClass("Hello"); System.out.println(c.getName()); Method method = c.getDeclaredMethod("main", String[].class); method.invoke(null, (Object) new String[]{"aa","bb"}); }
原文地址:https://www.cnblogs.com/shaomys/p/11811840.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 团体程序设计天梯赛-练习集 L1-002 打印沙漏
- 团体程序设计天梯赛-练习集 L1-003 个位数统计
- 团体程序设计天梯赛-练习集 L1-004 计算摄氏温度
- 团体程序设计天梯赛-练习集 L1-007 念数字
- 团体程序设计天梯赛-练习集 L1-008 求整数段和
- K8s多租户场景下的多层级namespace规则解析
- 团体程序设计天梯赛-练习集 L1-010 比较大小
- 团体程序设计天梯赛-练习集 L1-012 计算指数
- 团体程序设计天梯赛-练习集 L1-013 计算阶乘和
- 团体程序设计天梯赛-练习集 L1-036 A乘以B
- 团体程序设计天梯赛-练习集 L1-015 跟奥巴马一起画方块
- 团体程序设计天梯赛-练习集 L1-011 A-B
- vuepress引入vue-qr组件后build报错navigator is not defined问题
- 团体程序设计天梯赛-练习集 L1-022 奇偶分家
- k8s——针对有状态服务实现数据持久化