2010-06-22 9 views

Odpowiedz

35

rt = czas pracy

Zawiera wszystkie biblioteki Java Runtime. (Essential)

46

Zawiera wszystkie klasy dostępne w środowisku Java Runtime Environment.

Jeśli nie masz go w swojej ścieżce klas, nie będziesz mieć dostępu do żadnej z tych klas, których potrzebujesz, takich jak java.lang.String lub java.io.File.

4

Środowisko wykonawcze (rt.jar) przechowuje wszystkie (większość ..) klasy java, które tworzą Java SE. Jest automatycznie dodawany do ścieżki klas.

7

Zawiera wbudowane klasy Java. rt może oznacza Runtime. Bez niego nie mógłbyś uruchomić programów Java :)

+0

przypuszczam, chcesz powiedzieć, "nie można uruchomić ...". –

+1

Tak, oczywiście :) –

5

Plik rt.jar znajduje się tam, gdzie znajdują się wszystkie pakiety java. Na przykład, jeśli plik klasy wywoła pakiet java.util, wówczas JVM może go wyszukać wewnątrz pliku rt.jar, co umożliwia jego prawidłowe działanie.

Na marginesie: nie zadzieraj z tym.

10

Kompilacja krzyżowa to jeden z przypadków, w którym należy go wyraźnie użyć.

Np. Jeśli korzystasz z Java 8 i chcesz skompilować Java 7, odrzucając rozszerzenia Java 8. Więc można spróbować:

javac -source 1.7 Main.java 

Ale wtedy javac powie: warning: [options] bootstrap class path not set in conjunction with -source 1.7, bo to może generować błąd co skompilować przeciwko innej wersji JCL.

Więc trzeba by ustawić rt.jar z:

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

Ten został poproszony o: warning: [options] bootstrap class path not set in conjunction with -source 1.5

7

rt.jar oznacza wykonawczego JAR i zawiera klasy bootstrap, mam na myśli wszystkie klasy z jądra Java API. Zauważyłem, że wielu programistów Java nie wie, co to jest rt.jar? i często mylone z rolą pliku rt.jar lub dlaczego używamy pliku rt.jar w Javie? Nic dziwnego, nazwa jest trochę tajemnicza.

Ten plik zawsze znajduje się w katalogu lib środowiska JRE, przynajmniej w systemach Windows i Linux. W systemie MacOSX znajduje się w innej lokalizacji i ma inną nazwę, np. Classes.jar, ale jest to tylko przed wersją JDK 1.7. Od wersji Java 7 Apple przestało dystrybuować Javę, a jeśli zainstalujesz ją oddzielnie, będzie miała taką samą nazwę jak rt.jar.

Wielu programistów uważa, że ​​ich klasy znajdują się w pliku rt.jar, aby rozwiązać problemy związane z klasą classpath, ale jest to zły pomysł. Powinieneś nigdy nie mieszać się do pliku rt.jar, zawiera on pliki klas, które są zaufane przez JVM i ładowane bez rygorystycznego sprawdzania bezpieczeństwa, jakie robi dla innych plików klasy.

2

Zawiera wszystkie standardowe klasy JDK. Podczas procesu ładowania klas w JVM jest to pierwszy ładowany ładunek, który jest wykonywany przez moduł ładujący klasy bootstrap, nadrzędny dla wszystkich programów ładujących klasy.

Można to sprawdzić przez siebie kompilacji programu java z tej opcji:

javac -verbose:class program.java 

aby zobaczyć sekwencję klasy załadowany.

Próbka:

[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] 
Powiązane problemy