Вы смешиваете две вещи - пакеты Java и файлы jar.
Пакет - это не более чем пространство имен для классов, часто используемых вместе.Оператор import java.awt.*
не добавляет классы AWT в вашу программу, он просто позволяет писать Graphics
вместо java.awt.Graphics
и тому подобное.Вы ничего не можете сделать, чтобы избежать их импорта, если не хотите их прописывать (что еще более раздражает).
Чтобы иметь возможность использовать класс во время выполнения, этот класс должен бытьдоступны для виртуальной машины - независимо от того, импортировали ли вы ее или полностью написали ее имя.Стандартные классы, такие как java.awt.*
, обычно уже известны вашей виртуальной машине (поскольку они являются частью среды выполнения).Чтобы использовать другие классы (включая ваши собственные), вам необходимо включить их в путь к классу (например, с помощью аргумента -cp
в команде java
или путем помещения их в текущий каталог), или вам нужно загрузитьих собственным загрузчиком классов.Здесь вы можете использовать файлы jar - файлы классов могут находиться либо в файлах jar, указанных в пути к классам, либо внутри каталогов, указанных в пути к классам.(URLClassloader работает так же.)
Но, опять же, упаковка классов в jar-файлах не мешает импортировать их, чтобы иметь возможность их использовать.Один из них касается разрешения имен компилятора, другой - загрузки классов времени выполнения.