2012-08-22 11 views
46

Como pasante, uso el código de empresa en mis proyectos y generalmente me envían un archivo jar para trabajar. Lo agrego a la compilación path en Eclipse y generalmente todo está bien y muy bien.¿Qué contiene exactamente un archivo jar?

Sin embargo, tengo curiosidad por saber qué contiene cada clase y cuando intento abrir una de las clases en el archivo jar, me dice que necesito un archivo fuente.

¿Qué significa esto? Vengo de un C/C++ de fondo por lo que es un jar similar a un archivo ya compilado .o y todo lo que puedo ver es el .h cosas? ¿O hay código real en el archivo jar que estoy usando que está encriptado para que no pueda leerlo?

¡Gracias por todas las respuestas!

Editar:
Gracias, chicos, yo sabía que era una especie de como un archivo pero yo estaba confundido por qué cuando traté de abrir los archivos .class, tengo un montón de caracteres aleatorios. La salida fue similar cuando intenté abrir un archivo .o en C, así que solo quería asegurarme.
Gracias!

+0

[Formato de archivo JAR] (http://en.wikipedia.org/wiki/JAR_ (file_format)) – mellamokb

+0

http://en.wikipedia.org/wiki/JAR_ (file_format \) – danmcardle

+2

@ Blue Moon: Lo curioso es que google me lleva hasta aquí. : p – user1036719

Respuesta

51

Un archivo JAR es en realidad un archivo ZIP. Puede contener cualquier cosa, generalmente contiene código compilado de Java (* .class), pero a veces también código fuente de Java (* .java).

Sin embargo, Java puede descompilarse; en caso de que el desarrollador ofusque su código, no obtendrá ninguna clase/función/nombre de variable útiles.

14

La mejor manera de entender lo que el archivo jar contiene es mediante la ejecución de esto:

comando Ir a la línea y ejecutar jar tvf jarfilename.jar

42

Sin embargo, tengo curiosidad por lo que cada clase contiene y cuando intento abrir una de las clases en el archivo jar, me dice que necesito un archivo fuente.

Un archivo jar es básicamente un archivo zip que contiene archivos .class y potencialmente otros recursos (y metadatos sobre el propio jar). Es difícil comparar C con Java realmente, 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 ejecuta jar xf foo.jar, puede extraer los archivos del mismo y echarles un vistazo. Tenga en cuenta que no necesita un archivo jar para ejecutar el código Java: los cargadores de clases pueden cargar datos de clases directamente desde el sistema de archivos, o desde las URL, así como desde archivos jar.

+0

Gracias, sabía que era como un archivo, ya que podía descomprimirlo pero me confundí por qué ninguno de los archivos .class contenía texto legible. Gracias por explicar, supongo que una .class es algo así como un archivo .o. – joshualan

1

Un archivo .jar es similar a un archivo .exe. En esencia, son ambos archivos zip ejecutables (diferentes algoritmos zip).

En un archivo jar, verá carpetas y archivos de clase. 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 decompilador Java (ubicado aquí: http://java.decompiler.free.fr/?q=jdgui) y un extractor .jar (7zip funciona bien).

9

Un archivo jar es un archivo zip con algunos archivos adicionales que contienen metadatos. (A pesar de la extensión .jar, es en formato zip, y los servicios públicos que se ocupan de archivos .zip también son capaces de hacer frente a los archivos .jar.)

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

archivos Jar pueden contener cualquier tipo de archivos , pero generalmente contienen archivos de clase y archivos de configuración de soporte (propiedades), gráficos y otros archivos de datos necesarios para la aplicación.

Los archivos de clase contienen código compilado de Java, que es ejecutable por la Máquina Virtual de Java.

http://en.wikipedia.org/wiki/Java_class_file

+0

plus 1 porque enlaza con el estándar –

3

archivo JAR contiene compilado clases Java binarios en forma de *.class que se puede convertir a la clase legible .java decompilando que el uso de algunos decompilador de código abierto. El jar también tiene un META-INF/MANIFEST.MF opcional que nos dice cómo usar el archivo jar: especifica otros archivos jar para cargar con el jar.

2

JD-GUI es una herramienta muy útil para la navegación y la descompilación JAR

0

Un archivo .jar contiene el código compilado (archivos * .class) y otros datos/recursos relacionados con ese código. Le permite agrupar varios archivos en un solo archivo. También contiene metadatos. Como es un archivo zip, es capaz de comprimir los datos que usted pone en él.

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 archivos JAR como "JAR son ficheros de archivo basado en el formato de archivo ZIP, permitiendo que muchos archivos que se agregan en un solo archivo. Normalmente, el Los archivos contenidos en el archivo son una mezcla de archivos compilados de clase Java y recursos , 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 de archivos estándar y formatos dentro de eso directamente, la mayoría de los cuales es el archivo MANIFEST.MF " ".

5

JAR significa 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 motivación principal para su desarrollo fue que los applets de Java y sus componentes necesarios (archivos .class, imágenes y sonidos) puedan descargarse 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 un applet se puede cargar en una página web y comenzar a funcionar. El formato JAR también admite 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 ser firmadas digitalmente por el autor del applet para autenticar su origen.

0

Según mi comprensión Jar archivo es el mismo que Zip pero tiene archivos ejecutables.

Si no tiene archivos ejecutables en Jar, entonces sería lo mismo que el archivo Zip, quiero decir por qué ir a Jar.

Dado que el archivo Jar tiene archivos ejecutables, se pueden cargar fácilmente en su código y transferir fácilmente a otros para usarlo.

1

Simplemente compruebe si el archivo aopalliance.jar tiene .java archivos en lugar de los archivos .class. si es así, simplemente extraiga el archivo jar, impórtelo en eclipse & cree un jar a través de eclipse. Funcionó para mí

0

Jar (Java Archive) contiene un grupo de archivos .class.

1.To crear 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.To extracto de Jar File (Archivo Descomprimir)

jar -xvf NameOfJarFile.jar 

tabla de visualización del contenido 3.To

jar -tvf NameOfJarFile.jar 
Cuestiones relacionadas