¿Cuál es la necesidad de rt.jar ??¿Por qué usamos rt.jar en un proyecto de Java?
Respuesta
tr = Tiempo de ejecución
Contiene todas las bibliotecas de tiempo de ejecución de Java. (Esencial)
Contiene todas las clases provistas en Java Runtime Environment.
Si no lo tiene en su ruta de clases, no tendrá acceso a ninguna de las clases que necesita usar como java.lang.String o java.io.File.
El tiempo de ejecución (rt.jar) contiene todas las (la mayoría de las) clases de Java que forman Java SE. Se agrega a la ruta de clases automáticamente.
Contiene las clases integradas de Java. rt
puede significar Runtime
. Sin él no podría ejecutar los programas Java
:)
El rt.jar es donde residen todos los paquetes java. Por ejemplo, si un archivo de clase llama al paquete java.util, entonces la JVM puede buscarlo dentro de rt.jar, lo que permite que se ejecute correctamente.
En una nota al margen: No juegues con eso.
La compilación cruzada es un caso en el que tiene que usarla explícitamente.
P. ej., Si tiene Java 8 y quiere compilar Java 7 y rechaza las extensiones de Java 8. Lo que podría intentar:
javac -source 1.7 Main.java
Pero entonces javac
va a decir: warning: [options] bootstrap class path not set in conjunction with -source 1.7
, ya que podría generar errores co compilar contra una versión diferente del JCL.
lo que sería necesario para establecer rt.jar
con:
javac -source 1.7 -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar Main.java
Esta fue preguntado en: warning: [options] bootstrap class path not set in conjunction with -source 1.5
rt.jar es sinónimo de tiempo de ejecución y JAR contiene las clases de arranque, me refiero a todas las clases de Core API de Java He descubierto que muchos programadores de Java no saben qué es rt.jar? y a menudo se confunde con el rol del archivo rt.jar o por qué usamos el archivo rt.jar en Java? No es sorpresa, el nombre es un poco críptico.
Este archivo siempre reside en el directorio lib de JRE, al menos en Windows y Linux. En MacOSX reside en una ubicación diferente y también tiene un nombre diferente, es decir, classes.jar, pero eso es solo anterior a JDK 1.7. Desde el lanzamiento de Java 7, Apple ha dejado de distribuir Java y si se instala por separado, tendrá el mismo nombre que rt.jar.
Muchos desarrolladores piensan incluir sus clases dentro de rt.jar para resolver problemas relacionados con classpath, pero esa es una mala idea. Nunca debe estar jugando con rt.jar, contiene archivos de clase que JVM confía y cargados sin estrictas comprobaciones de seguridad para otros archivos de clase.
Contiene todas las clases estándar de JDK. Durante el proceso de carga de clases en JVM, este es el primero que se carga y lo hace el cargador de clases de arranque, principal de todos los cargadores de clases.
Puede comprobarlo usted mismo mediante la compilación de un programa en Java con esta opción:
javac -verbose:class program.java
el fin de ver la secuencia de la clase cargada.
muestra:
[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]
- 1. ¿Por qué usamos Response.ClearHeaders()?
- 2. ¿Por qué usamos web.xml?
- 3. ¿Por qué usamos "({})" en jQuery?
- 4. ¿Por qué usamos la serialización?
- 5. ¿Por qué exactamente usamos NoSQL?
- 6. Por qué * debería * usamos EventHandler
- 7. ¿Por qué usamos finalmente bloques?
- 8. ¿Por qué usamos la Finalización en Unidades?
- 9. ¿Por qué usamos la anotación de hibernación?
- 10. ¿Por qué usamos la interfaz sin miembros?
- 11. ¿por qué usamos el tipo @Master?
- 12. ¿Por qué usamos canvas.save o canvas.restore?
- 13. ¿Por qué usamos Virtual y Override?
- 14. ¿Por qué usamos HTML helper en ASP.NET MVC?
- 15. ¿Por qué usamos "esto" en los Métodos de extensión?
- 16. ¿Para qué usamos glyph?
- 17. Diferencia de HashMap en alt-rt.jar y rt.jar?
- 18. ¿Dónde y por qué usamos __toString() en PHP?
- 19. ¿Por qué usamos [super viewDidLoad] en cada método viewDidLoad?
- 20. ¿Por qué el acceso está restringido a jre6/lib/rt.jar para OperatingSystemMxBean?
- 21. rt.jar com.sun.istack.internal packages
- 22. Las cadenas son objetos en Java, entonces ¿por qué no usamos 'nuevo' para crearlos?
- 23. ¿Cómo usar Maven en mi proyecto Java y por qué?
- 24. ¿Para qué usamos CURLOPT_WRITEFUNCTION en PHP cURL?
- 25. OWASP ESAPI SimpleTest en un proyecto Maven Java EE
- 26. ¿Por qué usamos "tipo * var" en lugar de "tipo & var" cuando definimos un puntero?
- 27. ¿Por qué necesitamos interfaces en Java?
- 28. Conversión de un proyecto Java en un proyecto web dinámico
- 29. Cuándo usamos ANTLR
- 30. ¿Cuándo usamos MVVM?
supongo, que quiere decir, "no se podía correr ...". –
Sí, por supuesto :) –