Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse中的自定义编译时类加载?_Java_Eclipse_Compiler Construction_Classloader - Fatal编程技术网

Java Eclipse中的自定义编译时类加载?

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(); [...]

在编译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();

  [...]
}
编译源文件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的替代版本,这可能很困难或不可能。

谢谢您的回复!我也怀疑: