Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Как Классы Находятся

Как Средство запуска Java Находит Классы

Средство запуска Java, java, инициирует виртуальную машину Java. Поиски виртуальной машины и классы загрузок в этом порядке:

В действительности эти три пути поиска соединяются, чтобы сформировать простой путь class. Это подобно "плоскому" пути class, ранее используемому, но у текущей модели есть некоторые важные различия:

Как Средство запуска Java Находит Классы Начальной загрузки

Классы начальной загрузки являются классами, которые реализуют Java 2 Платформы. Классы начальной загрузки находятся в rt.jar и несколько других файлов фляги в jre/lib каталог. Эти архивы определяются значением начальной загрузки путь class, который сохранен в sun.boot.class.path системное свойство. Это системное свойство для ссылки только, и не должно быть непосредственно изменено.

Очень маловероятно, что Вы должны будете пересмотреть начальную загрузку путь class. Нестандартная опция,-Xbootclasspath, позволяет Вам делать так в тех редких cicrcumstances, в которых необходимо использовать различный набор базовых классов.

Отметьте, что классы, которые реализуют Java 2 инструмента SDK, находятся в отдельном архиве от классов начальной загрузки. Архив инструментов является SDK/lib/tools.jar файл. Средства разработки добавляют этот архив к пользователю путь class, вызывая средство запуска. Однако, этот увеличенный пользователь путь class только используется, чтобы выполнить инструмент. Инструменты, которые обрабатывают исходный код, javac и javadoc, используют исходный путь class, не увеличенную версию. (Для получения дополнительной информации см., Как Javac и Javadoc Находят Классы, ниже.)

Как Средство запуска Java Находит Классы Расширения

Классы расширения являются классами, которые расширяют платформу Java. Каждый .jar файл в каталоге расширения, jre/lib/ext, как предполагается, является расширением и загружается, используя Платформу Расширения Java. Свободные файлы class в каталоге расширения не будут найдены. Они должны содержаться в файле .jar (или файле .zip). Нет никакой опции, предусмотрел изменение расположения каталога расширения.

Если каталог jre/lib/ext содержит многократный .jar файлы, и те файлы содержат классы с тем же самым именем, такие как:

smart-extension1_0.jar contains class smart.extension.Smart
smart-extension1_1.jar contains class smart.extension.Smart

class, который фактически загружается, неопределен.

Как Средство запуска Java Находит Пользовательские Классы

Пользовательские классы являются классами, которые основываются на платформе Java. Чтобы найти пользовательские классы, средство запуска отсылает к пользователю путь class - список каталогов, архивов JAR, и архивов ZIP, которые содержат файлы class.

У файла class есть подпуть, который отражает полностью определенное имя class. Например, если class com.mypackage.MyClass сохранен под /myclasses, тогда /myclasses должен быть в пользователе, которым путь class и полный путь к файлу class должны быть /myclasses/com/mypackage/MyClass.class. Если class сохранен в названном архиве myclasses.jar, тогда myclasses.jar должен быть в пользователе путь class, и файл class должен храниться в архиве как com/mypackage/MyClass.class.

Пользователь путь class определяется как строка с двоеточием (:) разделение записей пути class на Солярисе, и точки с запятой (;) разделение записей на системах Microsoft Windows. Средство запуска java помещает пользователя строка пути class в java.class.path системное свойство. Возможные источники этого значения:

Как Средство запуска Java Находит Классы JAR-class-path

Файл JAR обычно содержит "декларацию" - файл, который перечисляет содержание JAR. Декларация может определить JAR-class-path, который далее расширяет путь class (но только загружая классы из того JAR). Классы, к которым получает доступ JAR-class-path, находятся в следующем порядке:

Как Javac и JavaDoc Находят Классы

javac и javadoc инструменты используют файлы class двумя отличными способами:

Файлы class, используемые, чтобы разрешить ссылки исходного кода, являются главным образом теми же самыми файлами class, используемыми, чтобы выполнить javac и javadoc. Но есть некоторые важные исключения:

Если class, на который ссылаются, определяется и в файле class и в исходном файле, javadoc всегда использует исходный файл (javadoc, никогда не компилирует исходные файлы). В той же самой ситуации javac использует файлы class, но автоматически перекомпилировал любые файлы class, это решает быть устаревшим. Правила для автоматической перекомпиляции документируются в javac документ для Windows или Солярис.

По умолчанию javac и javadoc ищут пользователя путь class и файлы class и файлы исходного кода. Если-sourcepath опция определяется, javac, и javadoc ищут исходные файлы только на указанном пути исходного файла, все еще ища пользователя путь class файлы class.

Загрузка класса и Политика безопасности

Чтобы использоваться, class или интерфейс должны быть загружены загрузчиком class. Использование определенного загрузчика class определяет политику безопасности, связанную с загрузчиком class.

Программа может загрузить class или взаимодействовать через интерфейс, вызывая loadClass метод объекта загрузчика class. Но обычно загрузки программы class или интерфейс просто, обращаясь к этому. Это вызывает внутренний загрузчик class, который может применить политику безопасности к пользовательским классам и расширению. Если политика безопасности не была включена, всем классам "доверяют". Даже если политика безопасности включается, она не применяется к классам начальной загрузки, которым всегда "доверяют".

Когда включено, политика безопасности конфигурируется системой и пользовательскими файлами политики. Java 2 SDK включают системный файл политики, который предоставляет "доверенное" состояние классам расширения и устанавливает основные ограничения для пользовательских классов.

Чтобы включить или сконфигурировать политику безопасности, обратитесь к Средствам защиты.

Отметьте: Некоторая безопасность, программируя методы, которые работали с Java 1.1 платформы, является несовместимой с моделью загрузки class Java 2 Платформы.


Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами