使用javax.tools.JavaCompiler在内存中完全编译代码

桑德曼:

我正在使用javax.tools包(JDK 1.7)中的JavaCompiler即时编译一些内容,如下所示:

compiler.run(null, null, "-cp", paths, "path/to/my/file.java");

它可以工作,但是我想在内存中完成所有操作(例如,传递带有代码的字符串,而不是源文件,并返回字节码而不是.class文件)。我发现扩展InputStreamOutputStream参数没有用,因为它可能与控制台中的相同。您知道一种使run方法像这样工作的方法吗?还是您知道使用该getTask()方法的可靠方法?(扩展FileManager看起来很容易,但并不容易:)

中间:

我已经在Mac OS Java 7中运行了上面的代码。它们都不起作用。所以我写了一个https://github.com/trung/InMemoryJavaCompiler

StringBuffer sourceCode = new StringBuffer();
sourceCode.append("package org.mdkt;\n");
sourceCode.append("public class HelloClass {\n");
sourceCode.append("   public String hello() { return \"hello\"; }");
sourceCode.append("}");

Class<?> helloClass = InMemoryJavaCompiler.compile("org.mdkt.HelloClass", sourceCode.toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用javax.tools.JavaCompiler编译循环依赖类

使用javax.tools.JavaCompiler编译源代码时如何设置类路径?

使用javax.tools在运行时编译Java源代码?

javax.tools编译器生成jar

在Spring 3.0.3中使用Velocity Tools

使用javax.tool进行级联内存编译

使用JavaCompiler和ClassLoader编译和运行用户代码

javax.tools是否依赖JDK?

如何在不使用JDK的情况下从tools.jar使用JavaCompiler

使用`lombok`注释和Java JDK 8在内存中编译Java类

如何使用Roslyn添加对在内存流中编译的类型的引用?

如何使用 NodeJS 脚本中的 firebase-tools?

Chrome Dev Tools:代码折叠

单击按钮后未发生重定向,但在Dev Tools Console中可以使用相同的代码

使用javax.script.ScriptEngineManager在JVM中评估Kotlin的问题

Java中的JSON验证程序-使用javax.validation.constraints

如何使用javax.json读取JSON中的数组

如何在Visual Studio 2015中使用Entity Framework Power Tools?

使用tools.run_flow()在Google Sheets API教程中引发SSLHandshake“证书验证”错误

使用inotify-tools递归地在多个目录中连续检测新文件

如何使用Productivity Power Tools在VS 2013中禁用可变的行高?

使用Productivity Power Tools仅发送Visual Studio 2013中的固定选项卡吗?

使用命令行parquet-tools查看镶木地板中的架构

是否可以使用Power Tools在PowerShell中创建新的TFS工作区?

使用 Python 中的 OR-Tools CP Solver(多背包)进行包裹运输(包裹合并)

从字节(在内存中使用任意编码的文本)在内存中创建zip文件

如何使用graphql-tools调用查询

使用 Gradle 进行 Hibernate Tools 逆向工程

使用Redux Dev Tools扩展和Typescript