Como becario, utilizo el código de la empresa en mis proyectos y generalmente me envían un jar
archivo para trabajar. Lo añado a la acumulación path
en Eclipse
y por lo general todo está bien y dandy.
Sin embargo, sentí curiosidad por saber qué contenía cada clase y cuando trato de abrir una de las clases en el jar
archivo, me dice que necesito un archivo fuente.
¿Qué significa esto? Vengo de un fondo C / C ++ , ¿es jar
similar a un .o
archivo ya compilado y todo lo que puedo ver son las .h
cosas? ¿O hay un código real en el jar
archivo que estoy usando que está encriptado y no puedo leerlo?
¡Gracias por todas las respuestas!
Editar:
Gracias, chicos, sabía que era una especie de archivo, pero no sabía por qué cuando traté de abrir los .class
archivos, obtuve un montón de caracteres aleatorios. El resultado fue similar cuando intenté abrir un .o
archivo en C, así que solo quería asegurarme.
¡Gracias!
Respuestas:
Un archivo JAR es en realidad solo un archivo ZIP. Puede contener cualquier cosa; normalmente contiene código Java compilado (* .class), pero a veces también código fuente Java (* .java).
Sin embargo, Java se puede descompilar; en caso de que el desarrollador ofusque su código, no obtendrá ningún nombre útil de clase / función / variable.
fuente
Un archivo jar es básicamente un archivo zip que contiene archivos .class y potencialmente otros recursos (y metadatos sobre el jar en sí). En realidad, es difícil comparar C con Java, ya que el código de bytes de Java mantiene muchos más metadatos que la mayoría de los formatos binarios, pero el archivo de clase es código compilado en lugar de código fuente.
Si abre el archivo jar con una utilidad zip o lo ejecuta
jar xf foo.jar
, puede extraer los archivos y echarles un vistazo. Tenga en cuenta que no necesita un archivo jar para ejecutar código Java; los cargadores de clases pueden cargar datos de clase directamente desde el sistema de archivos, o desde URL, así como desde archivos jar.fuente
La mejor manera de comprender qué contiene el archivo jar es ejecutando esto:
Vaya a la línea de comando y ejecute
jar tvf jarfilename.jar
fuente
Un
jar
archivo es un archivo zip con algunos archivos adicionales que contienen metadatos. (A pesar de la extensión .jar, está en formato zip, y cualquier utilidad que se ocupe de archivos .zip también puede hacerlo).http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html
Los archivos jar pueden contener cualquier tipo de archivo, pero generalmente contienen archivos de clase y archivos de configuración de soporte (propiedades), gráficos y otros archivos de datos que necesita la aplicación.
Los archivos de clase contienen código Java compilado, que la máquina virtual Java puede ejecutar.
http://en.wikipedia.org/wiki/Java_class_file
fuente
JAR son las siglas de Java ARchive. Es un formato de archivo basado en el popular formato de archivo ZIP y se utiliza para agregar muchos archivos en uno. Aunque JAR se puede utilizar como una herramienta de archivo general, la principal motivación para su desarrollo fue que los applets de Java y sus componentes necesarios (archivos .class, imágenes y sonidos) se puedan descargar a un navegador en una sola transacción HTTP, en lugar de abrir una nueva conexión para cada pieza. Esto mejora en gran medida la velocidad con la que se puede cargar un subprograma en una página web y comenzar a funcionar. El formato JAR también admite la compresión, lo que reduce el tamaño del archivo y mejora aún más el tiempo de descarga. Además, las entradas individuales en un archivo JAR pueden estar firmadas digitalmente por el autor del subprograma para autenticar su origen.
fuente
El archivo Jar contiene clases binarias Java compiladas en la forma de las
*.class
cuales se pueden convertir a.java
clases legibles descompilando usando algún descompilador de código abierto. El jar también tiene un opcionalMETA-INF/MANIFEST.MF
que nos dice cómo usar el archivo jar: especifica otros archivos jar para cargar con el jar.fuente
Jar (Java Archive) contiene un grupo de archivos .class.
1.Para crear un archivo Jar (archivo zip)
if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file) if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class
2.Para extraer el archivo Jar (descomprimir el archivo)
3.Para mostrar la tabla de contenido
fuente
Un archivo .jar es similar a un archivo .exe. En esencia, ambos son archivos zip ejecutables (diferentes algoritmos zip).
En un archivo jar, verá carpetas y archivos de clases. Cada archivo de clase es similar a su archivo .o, y es un archivo java compilado.
Si desea ver el código en un archivo jar, descargue un descompilador de Java (ubicado aquí: http://java.decompiler.free.fr/?q=jdgui ) y un extractor .jar (7zip funciona bien).
fuente
JD-GUI es una herramienta muy útil para navegar y descompilar archivos JAR
fuente
Un archivo .jar contiene código compilado (archivos * .class) y otros datos / recursos relacionados con ese código. Le permite agrupar varios archivos en un solo archivo de almacenamiento. También contiene metadatos. Dado que es un archivo zip, es capaz de comprimir los datos que ingresa.
Un par de cosas que encontré útiles.
http://www.skylit.com/javamethods/faqs/createjar.html
http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html
El libro OSGi en la práctica define los archivos JAR como, "Los JAR son archivos de almacenamiento basados en el formato de archivo ZIP, lo que permite agregar muchos archivos en un solo archivo. Normalmente, los archivos contenidos en el archivo son una mezcla de archivos de clase Java compilados y recursos archivos como imágenes y documentos. Además, la especificación define una ubicación estándar dentro de un archivo JAR para metadatos, la carpeta META-INF, y varios nombres y formatos de archivo estándar directamente, el más importante de los cuales es el archivo MANIFEST.MF ".
fuente
Solo verifique si el
aopalliance.jar
archivo tiene.java
archivos en lugar de.class
archivos. Si es así, simplemente extraiga el archivo jar, impórtelo en eclipse y cree un jar aunque eclipse. Funcionó para mí.fuente
Mientras aprendía sobre JAR, me encontré con este hilo, pero no pude obtener suficiente información para personas como yo, que tienen experiencia en .NET, así que agregaré algunos puntos que pueden ayudar a personas como yo con experiencia en .NET.
Primero necesitamos definir un concepto similar al JAR en .NET, que es Ensamblaje y el ensamblaje comparte mucho en común con los archivos JAR de Java.
Entonces, un ensamblado es la unidad fundamental de empaquetado de código en el entorno .NET. Los ensamblados son autónomos y normalmente contienen el código intermedio de las clases de compilación, metadatos sobre las clases y cualquier otro archivo que necesite el código empaquetado para realizar su tarea. Dado que los ensamblados son la unidad fundamental del empaquetado de código, varias acciones relacionadas con la interacción con tipos deben realizarse a nivel de ensamblado. Por ejemplo , la concesión de permisos de seguridad, la implementación de código y el control de versiones se realizan a nivel de ensamblado.
Los archivos JAR de Java realizan una tarea similar en Java con la mayoría de las diferencias en la implementación. Los ensamblados generalmente se almacenan como EXE o DLL, mientras que los archivos JAR se almacenan en formato ZIP .
Fuente de información -> 5- Asambleas
fuente