O que contém exactamente um ficheiro jar?

Como estagiária, uso o código da empresa nos meus projectos e normalmente enviam-me um ficheiro para trabalhar. Adiciono-a à construção em {[[1]} e normalmente está tudo bem e bem.

No entanto, fiquei curioso em saber o que cada classe continha e quando tento abrir uma das classes do arquivo {[[[0]}, isso me diz que eu preciso de um arquivo fonte.

O que significa isto? Eu venho de umC/C++ background so é um jar semelhante a um ficheiro .o já compilado e tudo o que consigo ver são as coisas? Ou há código real no ficheiro {[[0]} que estou a usar que está encriptado para não o poder ler?

Obrigado por todas as respostas!

editar:
Obrigado, pessoal, eu sabia que era uma espécie de arquivo, mas fiquei confuso com o porquê de quando tentei abrir os arquivos, eu ter um monte de personagens aleatórios. A saída foi semelhante quando eu tentei abrir um arquivo .o Em C então eu só queria ter certeza.
Obrigado!

 57
Author: Randika Vishman, 2012-08-22

13 answers

Um ficheiro JAR é, na verdade, apenas um ficheiro ZIP. Ele pode conter qualquer coisa-geralmente contém código Java compilado (*.class), but sometimes also Java sourcecode (*.hipoteca).

No entanto, Java pode ser descompilado - no caso do desenvolvedor ofuscado seu código você não vai obter qualquer classe/função/nomes variáveis úteis embora.

 62
Author: ThiefMaster, 2012-08-22 18:31:14
No entanto, fiquei curioso sobre o que cada classe continha e quando tento abrir uma das aulas no arquivo jar, isso me diz que preciso de um arquivo fonte.

Um ficheiro jar é basicamente um ficheiro zip que contém .class files and potentially other resources (and metadata about the jar itself). É difícil comparar C com Java realmente, pois o código byte Java mantém muito mais metadados do que a maioria dos formatos binários-mas o arquivo class é o código compilado em vez do código fonte codigo.

Se você abrir o arquivo jar com um utilitário zip ou executar {[[0]} você pode extrair os arquivos dele, e dar uma olhada neles. Note que você não precisa de um arquivo jar para executar Java code-classloaders pode carregar dados de classe diretamente do sistema de arquivos, ou de URLs, bem como de arquivos jar.

 46
Author: Jon Skeet, 2012-08-22 18:31:33

A melhor maneira de entender o que o ficheiro jar contém é executando isto:

Vá para a linha de comandos e execute jar tvf jarfilename.jar

 14
Author: Ajay George, 2012-08-22 18:30:53

Um ficheiro jar é um ficheiro zip com alguns ficheiros adicionais que contêm metadados. (Apesar do .jar extensão, é em formato zip, e quaisquer utilitários que lidam com .arquivos zip também são capazes de lidar com .ficheiros jar.)

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

Os ficheiros Jar podem conter qualquer tipo de ficheiros, mas normalmente contêm ficheiros de classe e ficheiros de configuração de suporte (propriedades), gráficos e outros ficheiros de dados necessários pela aplicacao.

Os ficheiros de classe contêm código Java compilado, que é executável pela máquina virtual Java.

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

 10
Author: theglauber, 2015-03-27 19:05:55

JAR significa Java ARchive. É um formato de arquivo baseado no formato de arquivo ZIP popular e é usado para agregar muitos arquivos em um. Embora JAR possa ser usado como uma ferramenta de arquivamento geral, a principal motivação para o seu desenvolvimento foi para que applets Java e seus componentes necessários (.arquivos de classe, imagens e sons) podem ser baixados para um navegador em uma única transação HTTP, em vez de abrir uma nova conexão para cada peça. Isto melhora muito a velocidade com que um applet pode ser carregado em uma página web e começar a funcionar. O formato JAR também suporta compressão, o que reduz o tamanho do arquivo e melhora o tempo de download ainda mais. Além disso, entradas individuais em um arquivo JAR podem ser assinadas digitalmente pelo autor da applet para autenticar sua origem.

 6
Author: oxy_js, 2014-07-11 06:05:51

Jar file contains compiled Java binary classes in the form of *.class which can be converted to readable .java class by decompiling it using some open source decompiler. O jar também tem um META-INF/MANIFEST.MF opcional que nos diz como usar o ficheiro jar - especifica outros ficheiros jar para carregar com o jar.

 4
Author: Piyush Mattoo, 2012-08-22 18:36:40

JD-GUI é uma ferramenta muito útil para navegar e decompilar frascos

 2
Author: Anton Arhipov, 2012-08-22 18:52:37

A.jar file é semelhante a A.ficheiro exe. Em essência, eles são ambos arquivos zip executáveis (diferentes algoritmos zip).

Num ficheiro jar, irá ver pastas e ficheiros de classes. Cada arquivo de classe é semelhante ao seu .o file, e é um arquivo java compilado.

Se quiser ver o código num ficheiro jar, faça o download de um descompilador java (localizado aqui: http://java.decompiler.free.fr/?q=jdgui ) e A.extractor de jar (7zip funciona bem).

 1
Author: Tyzoid, 2012-08-22 18:32:23

Verifique se o ficheiro aopalliance.jar Tem ficheiros .java em vez de ficheiros .class. se assim for, Basta extrair o ficheiro jar, importá-lo no eclipse e criar um jar embora eclipse. Funcionou comigo.

 1
Author: Ghanshyam, 2016-03-08 07:51:20

A.jar file contains compiled code (*.ficheiros de classes) e outros dados / recursos relacionados com esse código. Ele permite que você agrupar vários arquivos em um único arquivo. Também contém metadados. Uma vez que é um arquivo zip é capaz de comprimir os dados que você colocou nele.

Algumas coisas que achei úteis.

Http://www.skylit.com/javamethods/faqs/createjar.html

Http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

O Livro OSGi define na prática os ficheiros JAR como, " os frascos são ficheiros de arquivo com base no formato de ficheiro ZIP, permitindo que muitos arquivos sejam agregados em um único arquivo. Tipicamente os ficheiros contidos no arquivo são uma mistura de arquivos de classe Java compilados e recurso arquivos como imagens e documentos. Além disso, a a especificação define a localização normal dentro de um pacote JAR para os meta-dados-a pasta META-INF - e vários nomes e formatos de arquivos padrão dentro disso diretamente, a maioria importante é o manifesto.Ficheiro MF."

 0
Author: Wazza, 2013-07-19 08:51:43

De acordo com o meu ficheiro Jar compreensivo, é o mesmo que o Zip, mas tem Ficheiros Executáveis.

Se você não tem arquivos executáveis em Jar então seria o mesmo que Arquivo Zip, quero dizer por que ir para Jar.

Uma vez que Jar file tem arquivos executáveis, eles podem ser facilmente carregados no seu código e facilmente transferidos para outros para usá-lo.

 0
Author: Srekk, 2015-09-04 05:01:05

Jar (Java Archive) contém o grupo de .ficheiros de turma.

1.To criar um ficheiro Jar (ficheiro 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 extrair o ficheiro Jar (ficheiro Unzip)

    jar -xvf NameOfJarFile.jar

3.To mostrar a tabela de conteúdo

    jar -tvf NameOfJarFile.jar
 0
Author: bishwas pokharel, 2016-06-06 08:22:57

Um JAR (Java ARchive) é um formato de arquivo de pacotes tipicamente usado para agregar muitos arquivos de classe Java e metadados e recursos associados (texto, imagens, etc.) em um arquivo para distribuição. Os arquivos JAR são Arquivos de arquivo que incluem um arquivo de manifesto específico de Java. Eles são construídos no formato ZIP e tipicamente têm um .extensão do ficheiro jar.

 0
Author: amigana _34, 2018-08-28 10:23:43