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
- Programación
- Aún sin calificaciones.
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-srccd recovered-srcjar 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.
| 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 |