问题设置包含三个java库(为了便于阅读,我删除了所有软件包名称,到处都使用了完整的限定名称):
external-lib:提供抽象类
public abstract class AbstractExternal {}
Run Code Online (Sandbox Code Playgroud)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的类路径中.
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)