我正在使用 javax.tools 包 (JDK 1.7) 中的 JavaCompiler 即时编译一些东西,如下所示:
compiler.run(null, null, "-cp", paths, "path/to/my/file.java");
它有效,但我想在内存中完成这一切(例如,传递一个带有代码的字符串,而不是源文件,并获取字节代码而不是 .class 文件)。我发现扩展 InputStream
和 OutputStream
参数没有用,因为它可能与控制台中的一样。你知道让 run 方法像这样工作的方法吗?或者您知道使用 getTask()
方法执行此操作的确认方法吗? (扩展 FileManager 看起来很容易,但并不那么容易 :)
原文由 Sandman 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Mac OS Java 7 中运行了上面的代码。它们都不起作用。所以我写了一个 https://github.com/trung/InMemoryJavaCompiler