Categoría: Java


Eclipse gradle error: Unsupported class file major version 61

Estuve trabajando en un proyecto con Java 17, luego tuve que volver a trabajar en un proyecto anterior, cuya versión era Java 11 y no podía compilar debido al error «Unsupported class file major version 61». Esto ocurre cuando tenemos archivos compilados en una versión (este caso Java 17) y luego la intentamos ejecutar en otra versión de Java (este caso Java 11). Aunque son dos proyectos distintos y la mayoría de los IDE manejan la versión de Java independiente uno de otro, hay componentes que se comparten y estos causan dicho error. Para empezar, se debe buscar el error […]


Descomprimir archivos rar con Junrar – Java

Trabajando nuevamente con archivos comprimidos, me pidieron que buscara una forma para descomprimir archivos rar desde Java. La única y más efectiva librería que probé fue Junrar https://github.com/junrar/junrar Fácil de instalar y utilizar pero hay que tener en cuenta que el algoritmo utilizado para crear archivos rar es privativo, esta librería NO provee una forma de comprimir rar, solo sirve para descomprimir y admite las primeras 4 versiones del algoritmo, la versión actual es la 5 y no hay forma de que funcione con esa versión. Ejemplo para descomprimir archivos rar proveniente de un byte[] array

  Un workaround, […]


Comprimir archivos byte array a zip y descomprimir zip a byte array – Java

Trabajando con una API para subir y bajar archivos de un servidor, me doy cuenta que todos los archivos los manejan como byte[] array, lo común es pasar esos archivos a base64 e incluso hay APIs que los convierte a esa base automáticamente si los devuelves en un json. Para este caso necesitaba generar archivos zip y abrir archivos zip, todo en memoria sin escribir en el disco. Estos métodos usa las clases propia que provee java: java.io y java.util.zip Ejemplo para comprimir múltiples archivos byte[] array

  Ejemplo para descomprimir un zip tipo byte[] array

  No […]


Java – Mostrar registros dinámicamente a partir de una vista

Varios de los reportes que manejo son simples tablas que muestran información, el inconveniente es que cada vez que se agrega, cambia o elimina alguna información debo cambiar los datos de las vistas y luego la aplicación para realizar nuevamente un deploy al servidor. Ya he hecho y configurado tanto tablas dinámicas como formularios dinámicos a partir de una tabla de configuración, esto es muy largo y tedioso, entonces me propuse a buscar un método simple para solo mostrar información. La idea original es: Usemos una vista para indicar tanto el título de las columnas como los datos de los […]


Error JDeveloper: Unable to create an instance of the Java Virtual Machine

Al trabajar con jdeveloper 10.1.3.4.0 de repente presenté este error al intentar abrirlo, no se había realizado ningún tipo de cambio pero igualmente a veces se afecta por malos cierres del ide o actualizaciones automáticas. Solución Nro 1: Debemos ir al archivo de configuración del jdeveloper, buscando la ruta de instalación: C:\JDeveloper10134\jdev\bin\jdev.conf Y buscamos la opción para «maximum heap», sino lo tiene, igualmente se puede agregar sin problemas. Si lo tiene y ya está activo, debes cambiarle el valor para que tome nuevamente los cambios y así volver a iniciar el jdeveloper: Con esto me fue suficiente, sin embargo hay […]


Colocar tiempo límite en Java

En programación algunos procesos y eventos se pueden ejecutar indefinidamente, por ejemplo con ciclos do-while, que no saldrán del ciclo mientras no se cumpla una condición. Adicional podemos agregar una segunda condición de límite de tiempo, de manera que podemos interrumpirlo para evitar errores o procesos que tardarían mucho sin un control. Ejemplo, podemos usar la clase Calendar para crear una instancia del tiempo y luego crear otra para verificar la diferencia entre dos tiempos:

C1 indica el tiempo límite. C2 solo es para comparar si pasó ese límite. La variable c1 contiene el tiempo actual +5seg (futuro que […]


Parámetros por valor o por referencia en JAVA 1

Esta duda surge desde que uno se inicia en la programación y empieza a trabajar con métodos/funciones que requieren la manipulación de datos sin tener que generar un valor de retorno. En otros lenguajes de programación por lo general, siempre los parámetros se pasan por valor y luego existe una sintaxis especial para indicar si un parámetro va a usarse por referencia. Esto es bastante claro y se entiende sus capacidades pero en Java puede resultar confuso porque no lo especifican claramente y tiene definición distinta. En Java todo se pasa por valor, es decir que no existe el termino […]


Algunos consejos sobre Hibernate

En un par de años he trabajado con varios proyectos que utilizan Hibernate y siempre veo los mismos errores, o mejor dicho, costumbres que pueden perjudicar el rendimiento de una aplicación. Todos estamos propensos a cometer errores y más cuando estás empezando, sin embargo con el tiempo, la experiencia y la investigación activa, podemos intuir sobre que podemos mejorar y evitar estos contratiempos. Por ello escribo este post, tanto para aconsejar como para recordarme a mi mismo sobre los pequeños detalles que necesitamos tomar en cuenta a la hora de crear nuestra aplicación. Son cosas simples que a la larga […]


¿Que es JPA? Diferencia con Hibernate

JPA significa Java Persistence Architecture API (API de Arquitectura de Persistencia Java), es una especificación de java para acceder, persistir y manejar datos entre Clases-Objetos de Java y bases de datos relacionales. Como conocemos un API significa Appication Programming Interface (Interfaz de Programación de Aplicaciones) es un grupo de funciones y procedimientos que permiten la creación de aplicaciones que aceden a características definidas. El API nos provee una guia para crear una interface que cumple con ciertos estándares. JPA nos indica una interface, no nos provee una implementación de esa interface, no provee ninguna operación para persistir un objeto a […]


Error en Java: FRM-92095: Oracle Jinitiator too low 3

Trabajando en un proyecto antiguo en java con oracle developer forms, me topé con un error al ejecutar la página que usa varios plugins/applets de java. El error indicaba «FRM-92095: Oracle Jinitiator too low. Please install version 1.1.8.2 or higher». Esto sucede porque la aplicación trabaja con jdk 1.4 y es compatible con jdk 1.6 (que ambos usan Jinitiator), sin embargo tenía instalado el jdk 1.7 por otro proyecto y netbeans usa el 1.7 por defecto ó 1.8 en su versión más reciente. Si es una pc de un usuario común, se puede desinstalar las versiones actuales del jdk mayor […]