【发布时间】:2011-12-17 03:14:14
【问题描述】:
我正在尝试编写一个在运行时将 jar 文件添加到 Play 类路径的 Play 插件。当调用onLoad 时,它需要加载一组jar,以便JDT 编译器可以使用它们来解析应用程序类中的依赖关系。这些 jar 文件不在标准的 lib/ 目录中,因此在 Play 启动时不会加载到系统类路径中。
其实加载jar文件是没有问题的,我会把我需要的每个jar文件指定为一个URL,然后将它们传递给URLClassLoader的一个实例。
经过大量研究后,我假设 Play 使用的类加载器位于 Play.classloader 中,我最初的计划是创建自己的扩展 Play.ApplicationClassloader 的类加载器。这个类加载器将使用 URLClassLoader 的实例来查找类,然后再委托给Play.ApplicationClassloader 中的标准功能。然后我打算用我的新实例替换 Play 类加载器:
Play.classloader = new MyExtensionClassLoader();
我遇到的问题是 JDT 编译器似乎没有使用 Play.classloader 实例来加载它的类。
所以我有两个问题:
如果 JDT 编译器不使用 Play.classloader 实例,它实际使用的是什么类路径?
更一般地说,有人对我如何在运行时将 jar 加载到 Play 中以便 JDT 编译器可以使用它有任何建议吗?
【问题讨论】:
标签: java playframework