Pregunta Ubicar biblioteca estándar de Java


¿Cuál es la mejor manera de localizar el jar que contiene las clases principales de Java, como java.lang.Object? he estado usando JAVA_HOME, pero resulta que eso solo funciona si el JDK está instalado. ¿Cómo puedo encontrar la ubicación estándar de la biblioteca que se usaría si java fueron ejecutados desde la línea de comandos?

Además, tengo que hacer esto desde un script de Python, así que no respondas con las bibliotecas de Java.


6
2017-11-24 22:00


origen


Respuestas:


Cuando lanzas java de la JVM de Oracle, establece sun.boot.class.path propiedad para señalar rt.jar, que normalmente contiene todos los java.lang cosas.

Lo que podrías hacer es lanzar un programa Java simple que recupera System.getProperty("sun.boot.class.path") y consigue dónde se supone que debe estar este archivo. Lea más sobre esto aquí.

Lo anterior debería funcionar si su entorno es correcto (JAVA_HOME está configurado, etc.). De lo contrario, me temo que tienes problemas con el huevo y la gallina ;-)


2
2017-11-24 23:00



Como no existen restricciones explícitas para colocar clases internas, debe tratar de manejar todos los lugares posibles (o tanto como sea posible).

Antes que nada, definitivamente debes buscar java en RUTA. Lamentablemente, fallará a veces, por ejemplo, a menudo puede encontrar java.exe en C:\Windows\System32. Afortunadamente, en el caso de Windows puede usar el registro para obtener una lista de JRE instalados.

Si ha encontrado algunos frascos que pueden contener clases básicas, puede usar zip o jar para verificar eso java/lang/Object.class esta ahí.


1
2017-12-21 22:58



Si está utilizando Linux, puede usar el comando de shell: "escriba java" y analice la salida.


0
2017-11-24 22:08



Python debe tener los medios para encontrar la ubicación del ejecutable "java" o "java.exe". Siga todos los enlaces simbólicos para revelar la verdadera ubicación. Mi Python está oxidado, pero creo shutil.which y os.path.realpath hará el trabajo.

Las clases principales estarán en ../lib/rt.jar relativo al ejecutable de Java.


0
2017-11-24 23:12