Muchas aplicaciones / IDEs Java requieren la variable de entorno JAVA_HOME para poder funcionar. Esta variable indica la ruta al directorio donde está instalado el kit de desarrollo de Java (JDK) o bien el entorno de ejecución de Java (JRE).
El kit JDK contiene todo lo que JRE ofrece y además proporciona binarios y bibliotecas adicionales necesarios para compilar y depurar programas Java. Si no interesa disponer del kit JDK, JRE es suficiente para poder ejecutar aplicaciones Java.
Cuando se instala una versión nueva / antigua de Java en el sistema, se debe actualizar el contenido de la variable, para que esto se haga de forma automática, basta con configurar la variable de la siguiente manera.
# JRE export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) # JDK export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
Si se tienen varias versiones de Java instaladas en el sistema, puede ser necesario en algunos momentos cambiar la versión predeterminada en uso. Esto se puede hacer adaptando la variable JAVA_HOME o bien, modificando el PATH o enlaces simbólicos para que los binarios apunten a la versión de Java requerida.
Algunas distribuciones como las basadas en RedHat o Debian, incluyen el comando “update-alternatives” el cual puede facilitar mucho dicha labor.
# Mostrar las versiones de Java instaladas update-alternatives --display java # Seleccionar una de ellas por medio de un menú. update-alternatives --config java # Probar el cambio. java -version
Con el comando “java -XshowSettings:all” se puede obtener la actual configuración de una instalación de Java, donde se encontrará la versión instalada, locales, codificación, directorio home en uso, etc.
java -XshowSettings:all VM settings: Max. Heap Size (Estimated): 5.00G Ergonomics Machine Class: server Using VM: OpenJDK 64-Bit Server VM Property settings: awt.toolkit = sun.awt.X11.XToolkit file.encoding = UTF-8 file.encoding.pkg = sun.io file.separator = / java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment java.awt.printerjob = sun.print.PSPrinterJob java.class.path = . java.class.version = 51.0 java.endorsed.dirs = /usr/lib/jvm/java-7-openjdk/jre/lib/endorsed java.ext.dirs = /usr/lib/jvm/java-7-openjdk/jre/lib/ext /usr/java/packages/lib/ext java.home = /usr/lib/jvm/java-7-openjdk/jre java.io.tmpdir = /tmp java.library.path = /usr/java/packages/lib/amd64 /usr/lib64 /lib64 /lib /usr/lib java.runtime.name = OpenJDK Runtime Environment java.runtime.version = 1.7.0_151-b01 java.specification.name = Java Platform API Specification java.specification.vendor = Oracle Corporation java.specification.version = 1.7 java.vendor = Oracle Corporation java.vendor.url = http://java.oracle.com/ java.vendor.url.bug = http://bugreport.sun.com/bugreport/ java.version = 1.7.0_151 java.vm.info = mixed mode java.vm.name = OpenJDK 64-Bit Server VM java.vm.specification.name = Java Virtual Machine Specification java.vm.specification.vendor = Oracle Corporation java.vm.specification.version = 1.7 java.vm.vendor = Oracle Corporation java.vm.version = 24.151-b01 line.separator = \n os.arch = amd64 os.name = Linux os.version = 4.14.13-1-ARCH path.separator = : sun.arch.data.model = 64 sun.boot.class.path = /usr/lib/jvm/java-7-openjdk/jre/lib/resources.jar /usr/lib/jvm/java-7-openjdk/jre/lib/rt.jar /usr/lib/jvm/java-7-openjdk/jre/lib/sunrsasign.jar /usr/lib/jvm/java-7-openjdk/jre/lib/jsse.jar /usr/lib/jvm/java-7-openjdk/jre/lib/jce.jar /usr/lib/jvm/java-7-openjdk/jre/lib/charsets.jar /usr/lib/jvm/java-7-openjdk/jre/lib/rhino.jar /usr/lib/jvm/java-7-openjdk/jre/lib/jfr.jar /usr/lib/jvm/java-7-openjdk/jre/classes sun.boot.library.path = /usr/lib/jvm/java-7-openjdk/jre/lib/amd64 sun.cpu.endian = little sun.cpu.isalist = sun.io.unicode.encoding = UnicodeLittle sun.java.launcher = SUN_STANDARD sun.jnu.encoding = UTF-8 sun.management.compiler = HotSpot 64-Bit Tiered Compilers sun.os.patch.level = unknown user.country = ES user.dir = /home/busi user.home = /home/busi user.language = es user.name = busi user.timezone = Locale settings: default locale = español default display locale = español (España) default format locale = español (España) available locales = ar, ar_AE, ar_BH, ar_DZ, ar_EG, ar_IQ, ar_JO, ar_KW, ar_LB, ar_LY, ar_MA, ar_OM, ar_QA, ar_SA, ar_SD, ar_SY, ar_TN, ar_YE, be, be_BY, bg, bg_BG, ca, ca_ES, cs, cs_CZ, da, da_DK, de, de_AT, de_CH, de_DE, de_LU, el, el_CY, el_GR, en, en_AU, en_CA, en_GB, en_IE, en_IN, en_MT, en_NZ, en_PH, en_SG, en_US, en_ZA, es, es_AR, es_BO, es_CL, es_CO, es_CR, es_DO, es_EC, es_ES, es_GT, es_HN, es_MX, es_NI, es_PA, es_PE, es_PR, es_PY, es_SV, es_US, es_UY, es_VE, et, et_EE, fi, fi_FI, fr, fr_BE, fr_CA, fr_CH, fr_FR, fr_LU, ga, ga_IE, hi_IN, hr, hr_HR, hu, hu_HU, in, in_ID, is, is_IS, it, it_CH, it_IT, iw, iw_IL, ja, ja_JP, ja_JP_JP_#u-ca-japanese, ko, ko_KR, lt, lt_LT, lv, lv_LV, mk, mk_MK, ms, ms_MY, mt, mt_MT, nl, nl_BE, nl_NL, no, no_NO, no_NO_NY, pl, pl_PL, pt, pt_BR, pt_PT, ro, ro_RO, ru, ru_RU, sk, sk_SK, sl, sl_SI, sq, sq_AL, sr, sr_BA, sr_BA_#Latn, sr_CS, sr_ME, sr_ME_#Latn, sr_RS, sr_RS_#Latn, sr__#Latn, sv, sv_SE, th, th_TH, th_TH_TH_#u-nu-thai, tr, tr_TR, uk, uk_UA, vi, vi_VN, zh, zh_CN, zh_HK, zh_SG, zh_TW Sintaxis: java [-options] class [args...] (para ejecutar una clase) o java [-options] -jar jarfile [args...] (para ejecutar un archivo jar) donde las opciones incluyen: -d32 usar un modelo de datos de 32 bits, si está disponible -d64 usar un modelo de datos de 64 bits, si está disponible -server para seleccionar la VM "server" La VM por defecto es server, porque la ejecución se está llevando a cabo en una máquina de clase de servidor. -cp <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar> -classpath <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar> Lista separada por : de directorios, archivos JAR y archivos ZIP para buscar archivos de clase. -D<nombre>=<valor> definir una propiedad del sistema -verbose:[class|gc|jni] activar la salida verbose -version imprimir la versión del producto y salir -version:<valor> Advertencia: Esta función está anticuada y se eliminará en una versión futura. es necesario que se ejecute la versión especificada -showversion imprimir la versión del producto y continuar -jre-restrict-search | -no-jre-restrict-search Advertencia: Esta función está anticuada y se eliminará en una versión futura. incluir/excluir JRE privados de usuario en la búsqueda de versión -? -help imprimir este mensaje de ayuda -X imprimir la ayuda sobre las opciones que no sean estándar -ea[:<nombre paquete>...|:<nombre clase>] -enableassertions[:<nombre paquete>...|:<nombre clase>] activar afirmaciones con la granularidad especificada -da[:<nombre paquete>...|:<nombre clase>] -disableassertions[:<nombre paquete>...|:<nombre clase>] desactivar afirmaciones con la granularidad especificada -esa | -enablesystemassertions activar afirmaciones del sistema -dsa | -disablesystemassertions desactivar afirmaciones del sistema -agentlib:<nombre bib>[=<opciones>] cargar la biblioteca de agente nativa <nombre bib>, como -agentlib:hprof véase también -agentlib:jdwp=help y -agentlib:hprof=help -agentpath:<nombre ruta acceso>[=<opciones>] cargar biblioteca de agente nativa con el nombre de la ruta de acceso completa -javaagent:<ruta acceso jar>[=<opciones>] cargar agente de lenguaje de programación Java, véase java.lang.instrument -splash:<ruta acceso imagen> mostrar una pantalla de presentación con la imagen especificada Consulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para obtener más información.
# Listar / Inspeccionar contenido de ficheros .jar jar tvf fichero.jar unzip -l fichero.jar # Extraer contenido de ficheros .jar jar xvf fichero.jar unzip fichero.jar # Editar ficheros contenidos en archivos .jar, gz o zip con el editor de texto Vim es posible y algo muy práctico. # Vim simplemente listará los ficheros para editar los archivos que se quieran. vim fichero.jar vim fichero.gz vim fichero.zip