我面临着编译的问题,但不明白为什么它发生。 其实花了很多时间来了解其中的原因是(它是远离明显的“废话”项目),但重现这个错误我大大简化了所有的代码,尤其是显示一个小例子给你后:
包装结构:
com.company
|
----Main.class
|
----maker
|
----Maker.class
Maker.class
package com.company.maker;
public interface Maker {
}
Main.class
package com.company;
import static com.company.Main.MakerImpl.Strategy.STRATEGY1;
import static com.company.Main.MakerImpl.Strategy.STRATEGY2;
import com.company.maker.Maker;
public class Main {
public static void main(String[] args) {
System.out.println(STRATEGY1.name() + STRATEGY2.name());
}
static class MakerImpl implements Maker {
enum Strategy {
STRATEGY1, STRATEGY2
}
}
}
和我在主类的编译错误:
错误:(15,39)的java:找不到符号符号:类设备位置:类com.company.Main
如果我改变从导入序列
import static com.company.Main.MakerImpl.Strategy.STRATEGY1;
import static com.company.Main.MakerImpl.Strategy.STRATEGY2;
->import com.company.maker.Maker;
至
->import com.company.maker.Maker;
import static com.company.Main.MakerImpl.Strategy.STRATEGY1;
import static com.company.Main.MakerImpl.Strategy.STRATEGY2;
然后它编译成功。
它是Java编译器的正常行为? 如果是的话我想清楚地了解为什么它会发生。
PS使用的Java版本1.8.0_112和1.7.0_80测试(MacOS的)