【发布时间】:2013-09-27 13:44:01
【问题描述】:
在我看来,Java Compiler API 允许在运行时编译一个类,将其输出(.class 文件)写入文件系统。但是,不支持内存编译。它是否正确 ?或者可以使用这个 API 在内存中编译一个类(从一个字符串)然后实例化这个类?
(我知道我可以将类编译到文件系统,然后使用自定义类加载器加载它,但我想知道是否可以在内存中编译它,而无需通过文件系统)。
是否有另一种替代机制可以在仅使用 J2SE 的内存编译中执行此操作? BeanShell(我可以做我想做的事的图书馆)在其网页中提到它可能会在“将来的某个时间点”包含在 J2SE 中,但是,其 JSR 的状态是“休眠”(无论如何是什么意思)。
更新:
理想情况下,我想知道这是否可以仅使用 J2SE 完成(或者是否有任何预期的 J2SE 增强功能允许我在 Java 8 中执行此操作)。但是,也感谢有关如何要求安装 JDK 的提示(感谢 Evgeniy)。
【问题讨论】:
-
编译类,然后使用自定义类加载器加载它...
-
“无磁盘访问”要求的原因是什么?
-
你好@Thorbjorn,我需要这个供第三方使用的库。一个原因是我试图最小化我的库的需求(比如用户临时目录的可用性)。
-
我会说“请在你的类路径中有一个编译器”比“请有一个临时文件夹”更具限制性。