Из Википедии, бесплатной энциклопедии
  (Перенаправлено из пути к классам (Java) )
Перейти к навигации Перейти к поиску

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

Обзор и архитектура [ править ]

Подобно классической динамической загрузки поведения, при выполнении Java - программ на Java Virtual Machine находит и загружает классы лениво (он загружает байт - код класса только тогда , когда класс впервые используется). Путь к классам сообщает Java, где искать в файловой системе файлы, определяющие эти классы.

Виртуальная машина ищет и загружает классы в следующем порядке:

  1. классы начальной загрузки: классы, которые являются фундаментальными для платформы Java (включая общедоступные классы библиотеки классов Java и частные классы, которые необходимы для работы этой библиотеки).
  2. классы расширения: пакеты, которые находятся в каталоге расширений JRE или JDK , jre / lib / ext /
  3. пользовательские пакеты и библиотеки

По умолчанию доступны только пакеты стандартного API JDK и пакеты расширений без необходимости указывать, где их искать. Путь для всех пользовательских пакетов и библиотек должен быть установлен в командной строке (или в манифесте, связанном с файлом Jar, содержащим классы).

Установка пути для выполнения программ Java [ править ]

Поставка в качестве аргумента приложения [ править ]

Предположим, у нас есть пакет org.mypackage, содержащий классы:

  • HelloWorld (основной класс)
  • SupportClass
  • UtilClass

а файлы, определяющие этот пакет, физически хранятся в каталоге D: \ myprogram (в Windows ) или / home / user / myprogram (в Linux ).

Файловая структура выглядит так:

Когда мы вызываем Java, мы указываем имя запускаемого приложения: org.mypackage.HelloWorld. Однако мы также должны указать Java, где искать файлы и каталоги, определяющие наш пакет. Итак, чтобы запустить программу, мы используем следующую команду:

где:

  • javaэто средство запуска среды выполнения Java , тип инструмента SDK (инструмент командной строки, такой как javac , javadoc или apt )
  • -classpath D: \ myprogram устанавливает путь к пакетам, используемым в программе (в Linux, -cp / home / user / myprogram ) и
  • org.mypackage.HelloWorld - это имя основного класса

Установка пути через переменную среды [ править ]

Переменная среды с именем CLASSPATHможет быть в качестве альтернативы используется для установки пути к классам. В приведенном выше примере мы также можем использовать в Windows:

установить  CLASSPATH = D: \ myprogramjava org.mypackage.HelloWorld

Правило состоит в том -classpath, что этот параметр, когда он используется для запуска приложения Java, переопределяет CLASSPATHпеременную среды. Если ничего не указано, текущий рабочий каталог используется как путь к классам. Это означает, что когда наш рабочий каталог D:\myprogram\(в Linux /home/user/myprogram/), нам не нужно явно указывать путь к классам. Однако при переопределении рекомендуется включить текущую папку "."в путь к классам в случае, если требуется загрузка классов из текущей папки.

То же самое относится не только к программе запуска java, но и к компилятору javac .

Установка пути к файлу Jar [ править ]

Если программа использует вспомогательную библиотеку, заключенную в файл Jar с именем supportLib.jar , физически расположенную в каталоге D: \ myprogram \ lib \, и соответствующая физическая файловая структура выглядит так:

D: \ моя программа \ | ---> lib \ | ---> supportLib.jar | ---> org \ | -> мой пакет \ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class

необходим следующий параметр командной строки :

java -classpath D: \ myprogram; D: \ myprogram \ lib \ supportLib.jar org.mypackage.HelloWorld

или альтернативно:

установить CLASSPATH = D: \ myprogram; D: \ myprogram \ lib \ supportLib.jarjava org.mypackage.HelloWorld

Добавление всех файлов JAR в каталог [ править ]

В Java 6 и выше можно добавить все jar-файлы в определенном каталоге в путь к классам, используя подстановочную нотацию.

Пример Windows:

java -classpath ".; c: \ mylib \ *" MyApp

Пример Linux:

java -classpath '.: / mylib / *' MyApp

Это работает как для -classpathопций, так и для путей к классам среды.

Установка пути в файле манифеста [ править ]

Если программа была заключена в файл Jar с именем helloWorld.jar , расположенный непосредственно в каталоге D: \ myprogram , структура каталогов будет следующей:

D: \ моя программа \ | ---> helloWorld.jar  | ---> lib \  | ---> supportLib.jar

Файл манифеста определен в helloWorld.jar имеет следующее определение:

Главный класс: org.mypackage.HelloWorldПуть к классу: lib / supportLib.jar

Файл манифеста должен заканчиваться либо новой строки или возврата каретки.

Программа запускается следующей командой:

java -jar D: \ myprogram \ helloWorld.jar [аргументы приложения]

Это автоматически запускает org.mypackage.HelloWorld, указанный в классе Main-Class с аргументами. Пользователь не может заменить это имя класса с помощью вызова java -jar. Class-Path описывает расположение supportLib.jar относительно расположения библиотеки helloWorld.jar . Ни абсолютный путь к файлу, который разрешен -classpathпараметром в командной строке, ни внутренние пути jar не поддерживаются. Это означает, что если файл основного класса содержится в банке, org / mypackage / HelloWorld.class должен быть допустимым путем в корне в банке.

Несколько записей пути к классам разделяются пробелами:

Путь к классу: lib / supportLib.jar lib / supportLib2.jar

Примечания к ОС [ править ]

Синтаксис пути к классам командной строки, тесно связанный с файловой системой, зависит от операционной системы. [1] Например:

  • во всех Unix-подобных операционных системах (таких как Linux и Mac OS X ) структура каталогов имеет синтаксис Unix с отдельными путями к файлам, разделенными двоеточием (":").
  • в Windows структура каталогов имеет синтаксис Windows, и каждый путь к файлу должен быть разделен точкой с запятой («;»).

Это не применяется, если путь к классам определен в файлах манифеста , где каждый путь к файлу должен быть разделен пробелом (""), независимо от операционной системы.

См. Также [ править ]

  • Загрузчик классов Java
  • Система модулей Java

Ссылки [ править ]

  1. ^ "Путь к классам" . Проверено 26 июня 2016 .

Внешние ссылки [ править ]

  • Примечание, объясняющее, как находятся классы Java, на веб-сайте Oracle
  • Спецификация того, как установить путь к классам на сайте Oracle