===== 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
-classpath
Lista separada por : de directorios, archivos JAR
y archivos ZIP para buscar archivos de clase.
-D=
definir una propiedad del sistema
-verbose:[class|gc|jni]
activar la salida verbose
-version imprimir la versión del producto y salir
-version:
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[:...|:]
-enableassertions[:...|:]
activar afirmaciones con la granularidad especificada
-da[:...|:]
-disableassertions[:...|:]
desactivar afirmaciones con la granularidad especificada
-esa | -enablesystemassertions
activar afirmaciones del sistema
-dsa | -disablesystemassertions
desactivar afirmaciones del sistema
-agentlib:[=]
cargar la biblioteca de agente nativa , como -agentlib:hprof
véase también -agentlib:jdwp=help y -agentlib:hprof=help
-agentpath:[=]
cargar biblioteca de agente nativa con el nombre de la ruta de acceso completa
-javaagent:[=]
cargar agente de lenguaje de programación Java, véase java.lang.instrument
-splash:
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