Table of Contents

Configurar la variable JAVA_HOME para que se actualice dinámicamente

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))))

Cambiar la versión predeterminada de Java en uso

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 

Listar las propiedades / configuración de java / JVM

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.

Inspeccionar / Extraer contenido de fichero Java ".jar"

# 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