Convertir jar a java

Convertir JAR a JAVA

Extrae el código fuente incrustado o decompila las clases JAR en archivos de código fuente Java utilizables.

Convierte archivos JAR en línea

Todavía no tenemos un conversor en línea específico para JAR a JAVA, pero puedes convertir archivos JAR en línea a estos formatos:

Cómo convertir un archivo jar a java

Los archivos fuente son necesarios cuando un JAR es la única copia disponible de una biblioteca o aplicación Java y su código debe inspeccionarse, auditarse, modificarse o reconstruirse. La mayoría de los JAR de lanzamiento contienen archivos .class compilados, por lo que recuperar archivos .java normalmente requiere una descompilación en lugar de una conversión directa de archivos.

Qué contiene un archivo JAR

Un JAR (Java Archive) es un archivo basado en ZIP utilizado por desarrolladores de Java, herramientas de compilación y proveedores de aplicaciones para distribuir bibliotecas, plugins y aplicaciones. Normalmente contiene clases compiladas, recursos, metadatos de dependencias y META-INF/MANIFEST.MF; los JAR ejecutables pueden declarar una clase de inicio en ese manifest.

Las herramientas de JDK, Maven, Gradle, Eclipse e IntelliJ IDEA pueden crear o consumir JAR. Un archivo independiente llamado name-sources.jar a menudo contiene los archivos fuente originales y debe utilizarse en lugar de descompilar el JAR compilado.

Qué es un archivo JAVA

No existe un formato binario “JAVA” independiente. Un archivo .java es código fuente Java de texto plano que contiene clases, interfaces, métodos, declaraciones de paquetes e imports. Puede editarse y compilarse con javac, siempre que las bibliotecas necesarias y el nivel de versión de Java requerido estén disponibles.

Un JAR normalmente produce muchos archivos fuente. Sus carpetas deben coincidir con los nombres de los paquetes: com.example.Main pertenece a com/example/Main.java. Java requiere que una clase pública de nivel superior use el mismo nombre de archivo que esa clase.

Extraer primero el código fuente existente

Enumere el contenido del archivo con el comando jar de JDK:

jar tf app.jar

Si el listado contiene archivos .java, extráigalos en un directorio de trabajo vacío:

mkdir recovered-src
cd recovered-src
jar xf ../app.jar

Si hay disponible un archivo de código fuente coincidente, extráigalo en su lugar:

jar xf app-sources.jar

No confunda recursos como .properties, archivos XML, imágenes o definiciones de servicios con código fuente Java. Extráigalos si el proyecto los necesita, pero no pueden convertirse en código .java significativo.

Descompilar clases compiladas

Si el JAR contiene únicamente archivos .class, utilice un descompilador de Java de escritorio. CFR es una opción adecuada de línea de comandos y, por lo general, gestiona mejor el bytecode de versiones más recientes de Java que muchos descompiladores antiguos. Descargue CFR desde el sitio oficial del proyecto y, a continuación, ejecute:

java -jar cfr.jar app.jar --outputdir recovered-src

CFR escribe los archivos .java recuperados en recovered-src. Como opción gráfica, abra el JAR en JD-GUI y seleccione File → Save All Sources; JD-GUI crea un archivo ZIP que debe extraerse antes de abrir los archivos en un IDE.

IntelliJ IDEA puede mostrar clases descompiladas para su inspección, pero CFR o JD-GUI son preferibles cuando se necesita un árbol de código fuente exportable. Para muestras pequeñas, públicas y no confidenciales, servicios de navegador como Decompiler.com pueden descompilar JAR sin instalación local; revise sus condiciones de retención y privacidad antes de cargar cualquier archivo.

Límites de compilación y recuperación

El resultado descompilado no es el proyecto de código fuente original. El bytecode no conserva comentarios, formato, la mayoría de los nombres de variables locales, fuentes de pruebas, scripts de compilación, historial del sistema de control de versiones ni parte de la información de tipos genéricos. La ofuscación puede reemplazar nombres significativos por identificadores como a y b.

Es posible que los archivos recuperados no se compilen inmediatamente. Añada las dependencias originales del JAR, el código generado, los annotation processors, los recursos y las opciones del compilador; después, compile para la versión de Java utilizada por las clases originales. Una versión más reciente del archivo de clase puede requerir un JDK más nuevo y un descompilador compatible con esa versión.

Los JAR multi-release pueden contener implementaciones de clases alternativas en META-INF/versions/, y los JAR sombreados pueden incluir dependencias junto con el código de la aplicación. Revise la estructura de paquetes y el manifest antes de considerar que cada clase recuperada forma parte de un único proyecto de código fuente.

Mantenga los JAR privados, de clientes, con licencia o confidenciales desde el punto de vista de la seguridad en una máquina local en lugar de cargarlos en un descompilador en línea. Descompile únicamente software que le pertenezca o que esté autorizado a inspeccionar; el código recuperado sigue estando sujeto a la licencia original y a las condiciones de copyright.

Simplemente, es imposible convertir JAR a JAVA directamente.
Por lo tanto, no existe un convertidor de jar a java o un convertidor en línea gratuito de .jar a .java.

JAR vs JAVA: comparación de formatos

Cómo se comparan los formatos JAR y JAVA en las propiedades que más importan para esta conversión.

Comparación de los formatos de archivo JAR y JAVA
Propiedad .JAR Java Archive .JAVA Java source code file
Estándar abierto Sí Parcialmente abierto
Compresión Ambos Sin compresión
Tamaño de archivo típico Medio Pequeño
Se abre en un navegador web No No
Edición posterior Limitado Fácil
Compatibilidad con metadata Básico Básico
Legible como texto plano No Sí
Más adecuado para Incrustación en aplicaciones Producción profesional
Introducido 1996 1995
Desarrollador Oracle (originally Sun Microsystems) Oracle (Java platform; originally Sun Microsystems)
Tipo MIME application/java-archive text/x-java-source

Otras conversiones de archivos .jar

Conversión inversa

Convertir a .java
desde otros formatos

Compartir en redes sociales: