Ich habe ein Problem mit der Kompilierung, aber kann nicht verstehen, warum es auftritt. Eigentlich wurde viel Zeit damit verbracht zu verstehen, wo der Grund ist (es war bei einem "Mist" -Projekt alles andere als offensichtlich), aber nachdem ich diesen Fehler reproduziert habe, vereinfacht ich den ganzen Code, um ein kleines Beispiel speziell für dich zu zeigen:Warum erhalte ich je nach Java-Import und Reihenfolge der statischen Imports unterschiedliche Kompilierergebnisse?
Paketstruktur:
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
}
}
}
Und ich habe Kompilierungsfehler in Hauptklasse:
Fehler: (15, 39) java: Klasse Maker Lage: nicht Symbol Symbol finden Klasse com.company.Main
Und wenn ich die Importsequenz ändern von
import static com.company.Main.MakerImpl.Strategy.STRATEGY1;
import static com.company.Main.MakerImpl.Strategy.STRATEGY2;
->import com.company.maker.Maker;
bis
->import com.company.maker.Maker;
import static com.company.Main.MakerImpl.Strategy.STRATEGY1;
import static com.company.Main.MakerImpl.Strategy.STRATEGY2;
dann ist es erfolgreich kompiliert.
Ist es normales Verhalten des Java Compilers? Wenn das so ist, möchte ich klar verstehen, warum es passiert.
P.S. mit getestet Java-Version 1.8.0_112 und 1.7.0_80 (MacOS)
Ja, das ist ein alter Fehler, wie ich sehe. Vielen Dank. –