小编Hen*_*reu的帖子

当导入的类扩展第三方库时,Java导入静态失败

问题设置包含三个java库(为了便于阅读,我删除了所有软件包名称,到处都使用了完整的限定名称):

  1. external-lib:提供抽象类

    public abstract class AbstractExternal {}
    
    Run Code Online (Sandbox Code Playgroud)
  2. my-lib-A:提供课程

    public class ClassA extends AbstractExternal {
        public static final String FOO = "foo";
    }
    
    Run Code Online (Sandbox Code Playgroud)

    external-lib 在my-lib-A的类路径中.

  3. my-lib-B静态地从ClassA导入FOO:

    import static ClassA.FOO;
    public class ClassB {
        private String foo = FOO;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    my-lib-A在my-lib-B的类路径中,但external-lib不是.

问题:该import static行产生以下错误:

The type AbstractExternal cannot be resolved. It is indirectly referenced from required .class files.

但是(1),将ClassB修改为

import ClassA;
public class ClassB {
    private String foo = ClassA.FOO;
}
Run Code Online (Sandbox Code Playgroud)

编译器很高兴.

但是(2),当添加第二个抽象时,两个my-lib-A就好了

public class AbstractClassA extends …
Run Code Online (Sandbox Code Playgroud)

java inheritance static-import ecj

6
推荐指数
1
解决办法
169
查看次数

标签 统计

ecj ×1

inheritance ×1

java ×1

static-import ×1