Как Java подробно ищет пакеты?JAVA

Программисты JAVA общаются здесь
Anonymous
Как Java подробно ищет пакеты?

Сообщение Anonymous »

Предположим, что у меня есть класс Main в следующей структуре папок:

Код: Выделить всё

root/
main/

А класс выглядит так:

Код: Выделить всё

package mypackage;

public class Main {}
Из корневой папки я компилирую класс A:

Код: Выделить всё

[\root] javac .\main\Main.java
Он скомпилирован, хотя исходный файл существует в основной подпапке, но его пакет определен как mypackage.
Если я хочу запустить класс относительно корневой папки:

Код: Выделить всё

[\root] java main.Main
[\root] java mypackage.Main
Ни один из этих методов не работает, и я хотел знать, верен ли мой образ мышления: Java просматривает структуру подпапок, чтобы найти класс в определенном пакете. Я хочу запустить класс main.Main, поэтому он ищет подпапку main и там находит класс Main, хотя внутри него он также ищет пакет. code>, и это не main.Main, поэтому возникает ошибка.
То же самое касается mypackage.Main, где он пытается найти подпапку mypackage, но ничего не находит.
Правильно ли я понял процесс поиска пакетов? Если да, то почему это также не проверяется на этапе компиляции?
P.S. Я знаю, как организовать файловую структуру и как запускать файлы, чтобы Java правильно идентифицировала все пакеты. Я просто хотел узнать, правилен ли мой образ мышления в данном случае.

Подробнее здесь: https://stackoverflow.com/questions/790 ... led-manner

Вернуться в «JAVA»