Spec-Zone .ru
спецификации, руководства, описания, API
|
Средство запуска Java, java, инициирует виртуальную машину Java. Поиски виртуальной машины и классы загрузок в этом порядке:
rt.jar
и несколько других важных файлов фляги..jar
файлы располагались в каталоге расширений.В действительности эти три пути поиска соединяются, чтобы сформировать простой путь class. Это подобно "плоскому" пути class, ранее используемому, но у текущей модели есть некоторые важные различия:
Классы начальной загрузки являются классами, которые реализуют 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. Каждый .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. Чтобы найти пользовательские классы, средство запуска отсылает к пользователю путь 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
системное свойство. Возможные источники этого значения:
.
", означая, что пользователь файлы class является всеми файлами class в текущем каталоге (или под этим, если в пакете).Файл JAR обычно содержит "декларацию" - файл, который перечисляет содержание JAR. Декларация может определить JAR-class-path, который далее расширяет путь class (но только загружая классы из того JAR). Классы, к которым получает доступ JAR-class-path, находятся в следующем порядке:
javac и javadoc инструменты используют файлы class двумя отличными способами:
Файлы class, используемые, чтобы разрешить ссылки исходного кода, являются главным образом теми же самыми файлами class, используемыми, чтобы выполнить javac и javadoc. Но есть некоторые важные исключения:
tools.jar
только используются, чтобы выполнить javac и javadoc. Классы инструментов не используются, чтобы не разрешить ссылки исходного кода если tools.jar
находится в пользователе путь class.Если 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 Платформы.