Подтвердить что ты не робот

Почему мы используем rt.jar в проекте java?

В чем заключается необходимость rt.jar?

4b9b3361

Ответ 1

rt = Время выполнения

Он содержит все библиотеки времени выполнения java. (Эфирное)

Ответ 2

Он содержит все классы, представленные в ООН т IME среды Java R.

Если у вас его нет в вашем пути к классам, у вас не будет доступа ни к одному из этих классов, которые вам нужно использовать, например, java.lang.String или java.io.File.

Ответ 3

Кросс-компиляция - это один случай, когда вы должны явно использовать его.

Например, если вы находитесь на Java 8 и хотите скомпилировать Java 7 при отказе от расширений Java 8. Поэтому вы можете попробовать:

javac -source 1.7 Main.java

Но тогда javac скажет: warning: [options] bootstrap class path not set in conjunction with -source 1.7, потому что он может генерировать ошибку co компиляции против другой версии JCL.

Поэтому вам нужно установить rt.jar с помощью:

javac -source 1.7 -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar Main.java

Об этом было задано по адресу: предупреждение: [options] путь к bootstrap не установлен в сочетании с -source 1.5

Ответ 4

rt.jar означает JAR для выполнения и содержит классы начальной загрузки, я имею в виду все классы из Core Java API. Я обнаружил, что многие программисты Java не знают, что такое rt.jar? и часто путают с ролью файла rt.jar или почему мы используем файл rt.jar в Java? Не удивительно, что это имя немного загадочно.

Этот файл всегда находится внутри каталога lib JRE, по крайней мере, в Windows и Linux. В MacOSX он находится в другом месте и имеет другое имя, то есть class.jar, но это только до JDK 1.7. Из выпуска Java 7 Apple прекратила распространять Java, и если вы будете отдельно устанавливать, оно будет иметь то же имя, что и rt.jar.

Многие разработчики думают включить свои классы в rt.jar для решения связанных с classpath проблем, но это плохая идея. Вы никогда не должны возиться с rt.jar, он содержит файлы классов, которым доверяет JVM и загружается без строгой проверки безопасности, которую она делает для других файлов классов.

Ответ 5

Он содержит встроенные классы Java. rt может означать Runtime. Без этого вы не смогли бы запустить Java программы:)

Ответ 6

В rt.jar есть все пакеты java. Например, если файл класса вызывает пакет java.util, JVM может искать его внутри rt.jar, что позволяет ему работать правильно.

На стороне примечания: Не вмешивайся в это.

Ответ 7

В runtime (rt.jar) хранятся все классы (большинство из..) java, которые образуют Java SE. Он автоматически добавляется в путь к классам.

Ответ 8

Он содержит все стандартные классы JDK. Во время процесса загрузки классов в JVM, он загружается первым и выполняется загрузчиком классов начальной загрузки, родителем всех загрузчиков классов.

Вы можете проверить это самостоятельно, скомпилировав Java-программу с этой опцией:

javac -verbose program.java

чтобы увидеть последовательность загруженного класса.

Образец:

[Loaded sun.security.timestamp.TimestampToken from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]
[Loaded sun.security.util.CertConstraintParameters from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]
[Loaded sun.security.util.ECKeySizeParameterSpec from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]
[Loaded sun.security.util.ECUtil from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]
[Loaded sun.security.util.Pem from /usr/lib/jvm/java-8-oracle/jre/lib/rt.jar]

Ответ 9

rt.jar обозначает JAR времени выполнения и содержит классы начальной загрузки, я имею в виду все классы из Core Java API. Я обнаружил, что многие программисты на Java не знают, что такое rt.jar? и часто путают с ролью файла rt.jar или почему мы используем файл rt.jar в Java? Не удивительно, название немного загадочно. Этот файл всегда находится в каталоге lib JRE, по крайней мере, в Windows и Linux. В MacOSX он находится в другом месте и также имеет другое имя, то есть classes.jar, но это только до JDK 1.7. Начиная с версии Java 7 Apple прекратила распространение Java, и если вы установите ее отдельно, она будет иметь то же имя, что и rt.jar. Многие разработчики думают включить свои классы в rt.jar для решения проблем, связанных с classpath, но это плохая идея. Вы никогда не должны связываться с rt.jar, он содержит файлы классов, которым доверяет JVM и загружает без строгой проверки безопасности, которую он выполняет для других файлов классов. В этой статье мы узнаем некоторые интересные вещи об этом волшебном JAR из мира Java. Для тех программистов, которые являются новичками в Java и не знакомы с JAR файлом, это zip-подобный файл, точно известный как Java-архив, в котором хранятся файлы классов Java и любые ресурсы, необходимые программе. Он также может содержать файл mainfest, который может включать запись Main-Class, чтобы сделать его исполняемым JAR, который можно запустить с помощью команды java -jar.

Важные моменты о rt.jar в Java

  1. rt.jar обозначает время выполнения и содержит все скомпилированные файлы классов для базовой среды выполнения Java.

2) Вы должны включить rt.jar в свой путь к классам, иначе у вас нет доступа к основным классам, например, java.lang.String, java.lang.Thread, java.util.ArrayList или java.io.InputStream и все другие классы. из Java API. Вы можете увидеть, что находится внутри rt.jar, открыв его с помощью WinRAR или WinZip клиента. Вы можете видеть, что он содержит не только все API Java, но и внутренние классы, указанные в com-пакете.

Что такое rt.jar в Java

3) В windows rt.jar всегда будет находиться в $ JAVA_HOME/jre/lib, где $ JAVA_HOME ссылается на каталог установки JDK. Даже если вы не устанавливаете JDK и просто устанавливаете JRE, вы увидите его в том же месте, но вы не найдете rt.jar в каталоге $ JAVA_HOME/lib. Кстати, в MacOSX он называется classes.jar и находится в каталоге /System/Library/Frameworks//Каталог классов. На следующем скриншоте вы можете видеть, что rt.jar находится в директории lib JRE в Windows 8.

Где найти rt.jar в Windows, Linux и MacOSX

4) В rt.jar находятся все пакеты Java. Например, если файл класса должен ссылаться на класс из пакета java.util.concurrent, например, ConcurrentHashMap, то JVM будет искать его внутри rt.jar, что позволит ему работать правильно.

5) Еще один вопрос, который задает Java-программист: где я могу найти исходный код для классов, включенных в rt.jar? хорошо, если вы установили JDK, а не JRE, вы можете найти все источники в файле $ JAVA_HOME/src.zip. Кстати, источники Sun. * также включены в src.zip, но это собственный закрытый код Oracle. Я также предлагаю вам включить этот JAR файл в Eclipse, чтобы вы могли просматривать исходный код любого класса JDK, просто набрав Ctrl + T и имя класса, а остальное позаботится о функциональности поиска Eclipse по типу Java.

6) Одной из самых важных вещей, которые нужно знать о rt.jar, является то, что все классы в этом файле JAR известны JVM, а это означает, что JVM не выполняет все проверки, которые он выполняет при загрузке любого другого JAR из любого другого места. Это сделано из-за различных причин производительности и по этой причине, эти классы загружаются загрузчиками или первичными загрузчиками классов. Не пытайтесь включать ваши файлы классов в rt.jar, так как это не рекомендуется Java. Это также компромисс с любой безопасностью.

7) Если вам интересны различные двоичные файлы и файлы JAR, используемые платформой Java, посмотрите на эту диаграмму. Вы можете видеть, что JDK имеет три основные папки bin, lib и jre. В каталоге bin содержатся все исполняемые двоичные файлы, например, java.exe для запуска Java-программы, javac.exe для компиляции Java-программы и т.д. lib содержит tools.jar и dt.jar. В папке jre снова находятся каталог bin и lib. Он находится в этом каталоге lib rt.jar. Кстати, для полного объяснения того, что делает каждый из этих файлов и папок, посетите официальные страницы Oracle. Они очень всеобъемлющие и описательные.

основные папки и файлы в JDK JRE

Это все о файле rt.jar в Java. Теперь вы знаете, какова цель rt.jar и почему вы не должны связываться с ней. Вы можете найти этот файл JAR в каталоге $ JAVA_HOME/jre/lib, и я рекомендую вам посмотреть его самостоятельно.

Подробнее: https://javarevisited.blogspot.com/2015/01/what-is-rtjar-in-javajdkjre-why-its-important.html#ixzz5icL7sAMZ