Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.

El día de hoy comienzo una nueva categoría llamada «exceptions«, donde compartiré (en medida de lo posible) como resolver o evitar que en nuestras aplicaciones salten excepciones o al menos indicar la razón por la cual es arrojada. En esta oportunidad les traigo la siguiente exception:

Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.

Esta excepción, se obtiene en Java 6 al haber discrepancias entre el tipo de instancia del keystore y el tipo de almacén de claves, al intentar cargar el almacén de claves. Por ejemplo  si intentásemos cargar el almacén de claves desde un fichero .jks (jks es una implementación por defecto de Java  para el almacenamiento de claves, que por ejemplo puede ser creado con el comando keytool del jsdk), habiendo indicado que la instancia del keystore es «pkcs12» en vez de haber utilizado el valor de «jks». Como el ejemplo a continuación:

Como evitar entonces la excepción? Muy sencillo, hay 2 alternativas.

  1. Utilizar como tipo para obtener la instancia del keystore el valor de «jks» en vez de «pkcs12» (para este ejemplo específicamente), es decir utilizar el tipo adecuado para obtener la instancia del keystore.
  2. Cargar el almacén de claves adecuado, es decir, para este ejemplo sería indicar el path del certificado digital (por ejemplo de tipo .p12, .pfx) en vez de haber utilizado el path del fichero jks.

Espero pueda ser de utilidad y les quite al menos uno que otro dolor de cabeza. Cualquier información que consideres pueda ser de utilidad relacionada con esta excepción, no dudes en compartirla.

Decompilador Java

Hacia mucho tiempo que no me veía en la necesidad de utilizar este tipo de herramientas como lo son los decompiladores, para aquellos que desconocen que son, en palabras sencillas, son herramientas que permiten obtener el código fuente de una clase a partir del Bytecode de la misma. A continuación les dejo un decompilador que he utilizado y hasta ahora me ha ido bien con el, es bastante sencillo, posee versiones para los principales sistemas operativos (Mac Os X, Windows y Linux) y como puntos a resaltar decompila desde Bytecode de la versión 1.1 hasta la versión 1.7 de Java, es gratuito y además posee plugins para eclipse y IntelliJ.

Enlace al sitio web del decompilador. Comparte con la comunidad tus impresiones acerca de la herramienta y si conoces alguna otra que nos puedas sugerir te lo agradeceremos.

Algunos screenshots