Имя пакета отличается от структуры папок, но код Java компилируется

Я использую Notepad ++ для написания кода Java и командную строку для его компиляции и запуска. Ниже приведен мой пример кода Java,

    package abraKadabra;

    public class SuperClass{
       protected int anInstance;

       public static void main(String [] abc){
           System.out.println("Hello");
       }
    }

Однако этот файл находится в следующей структуре папок:

"usingprotected \ superPkg" (usingProtected - это папка где-то в иерархии в C :)

Итак, мое имя пакета здесь должно быть что-то вроде usingProtected.superPkg вместо abraKadabra, как я писал.

Но когда я компилирую этот Java-код из командной строки, он компилируется нормально, без ошибок или предупреждений. Почему это так? Разве имя пакета не должно соответствовать структуре папок? И если бы это было так, как бы оно прилипло?

Например, если имя моего пакета usingProtected.superPkg, компилятор будет проверять в обратном порядке. Текущий рабочий каталог должен быть superPkg, затем родительский каталог должен быть usingProtected, и все готово. Это как он проверяет структуру папок с именем пакета?

24
задан Bhesh Gurung 6 December 2011 в 06:24
поделиться