Java Eclipse中的自定义编译时类加载?
在编译Java源文件时,是否有方法钩住Eclipse编译器以指定自定义类读取/解析/加载逻辑?我不确定正确的术语是什么,但本质上是编译时等价于运行时发生的类加载 例如,假设我有Java源代码:Java Eclipse中的自定义编译时类加载?,java,eclipse,compiler-construction,classloader,Java,Eclipse,Compiler Construction,Classloader,在编译Java源文件时,是否有方法钩住Eclipse编译器以指定自定义类读取/解析/加载逻辑?我不确定正确的术语是什么,但本质上是编译时等价于运行时发生的类加载 例如,假设我有Java源代码: package foo; import bar.Bar; public final class Foo { // getQux() returns type: qux.Qux private final Bar bar = baz.Baz.getQux().getBar(); [...]
package foo;
import bar.Bar;
public final class Foo {
// getQux() returns type: qux.Qux
private final Bar bar = baz.Baz.getQux().getBar();
[...]
}
编译源文件foo/foo.java时,编译器应请求读取3个类:
bar.bar-它被指定为导入。
baz.baz-它以完全限定的形式使用…=baz.baz.getQux。。。。
qux.qux-它是一个间接依赖项,通过调用baz.baz.getQux返回,而baz.baz.getQux又通过调用其getBar方法来访问bar.bar。
我希望能够截获这些类请求中的每一个,这样我就可以提供定制逻辑来获取所讨论的类——可能它位于数据库中,可能它由某个服务器在某处提供服务,等等
另外,我希望在用户显式打开Eclipse项目中的任何源文件之前,不要尝试编译它们。因此,在上面的示例中,直到用户实际打开源文件foo/foo.java,才会发出3个类请求bar.bar、baz.baz、qux.qux。理想情况下,项目中的源文件列表不必是文件系统中的实际文件,可能它们也存在于数据库中,等等,只有当用户打开/加载源文件时才进行编译尝试
我意识到,如果可能的话,这有一些缺点。例如,如果我编辑源文件foo/foo.java以使类包私有,这将悄悄地中断任何依赖于foo.foo的类,直到完成项目的完整编译。就目前而言,就我的目的而言,这很好。我可以在以后做一些事情来解决这个问题
有什么想法/建议吗
谢谢大家! 可能不会,这将属于JDT的Java构建路径部分,我认为它没有那种定制级别。似乎没有对此进行记录的扩展点。要得到一个明确的答案,你需要查看来源。您可能会添加此功能,这意味着您需要使用JDT的替代版本,这可能很困难或不可能。谢谢您的回复!我也怀疑: