【发布时间】:2015-11-09 02:55:06
【问题描述】:
我使用 GroovyClassLoader.parseClass(src) “即时”编译单个 groovy 源模块,一切正常。
但问题是当这个源模块导入其他类时,这些还没有编译。当我开始编译一个源但需要其他源并在源路径上准备好时,传统编译也会被编译。
如何使用带有目标的 GroovyClassLoader 来编译所有其他必需的源而不是来自 FILESYSYSTEM。 我的来源例如在数据库中,通过 URI 远程 http 等。
【问题讨论】:
-
public void setResourceLoader(GroovyResourceLoader resLoader) 和类 GroovyResourceLoader 对我来说很有趣吗?这么好的环境必须有从虚拟文件系统读取源的选项,我认为......
-
我做同样/类似的事情。 setResourceLoader 是你的答案。
-
@lscoughlin 我已经在很多方面检查了 GroovyResourceLoader,概念上一切正常,事件被触发,导入是已知的等等,我可以在实现的 GroovyResourceLoader 中读取源代码片段但不能返回引用 URL。 GroovyClassLoader 在很多地方都使用了 URL,但在哲学 java URLLoader 中,项目路径的内部。另一个问题 GroovyClassLoader 有许多难以“替换”(覆盖)的私有元素。你成功实现你的想法了吗?
-
是的。我在下面发布了我的解决方案。如果您有任何问题,请告诉我效果如何。