Este artigo descreve detalhadamente o uso do comando JAR, o que será útil para todos aprenderem e resumirem o uso do comando jar. Os detalhes são os seguintes:
O pacote JAR é um documento compactado exclusivo em Java. Na verdade, todos podem entendê-lo como um pacote .zip. Claro, existem diferenças. Existe um arquivo META-INF/MANIFEST.MF no pacote JAR. Quando você encontrar o pacote JAR, ele será gerado automaticamente.
O pacote JAR é gerado pelo comando /bin/jar.exe do diretório de instalação do JDK. Quando instalamos o JDK e definimos o caminho, podemos usar o comando jar.exe normalmente. pacote de ferramentas. Não se preocupe com esses detalhes.
Vamos ver como é usado:
Primeiro, parâmetros de comando jar:
formato do comando jar: jar {ctxuf}[vme 0 M i][-diretório C] nome do arquivo...
Dentre eles, um dos quatro parâmetros {ctxu} deve ser selecionado. [vfme 0 M i ] é um parâmetro opcional e o nome do arquivo também é obrigatório.
-c cria um pacote jar
-t exibe uma lista do conteúdo do jar
-x descompactar pacote jar
-u adiciona arquivos ao pacote jar
-f especifica o nome do arquivo do pacote jar
-v gera relatórios detalhados e os envia para dispositivos padrão
-m especifica o arquivo manifest.mf (você pode fazer algumas configurações para o pacote jar e seu conteúdo no arquivo manifest.mf).
-0 não compacta o conteúdo do pacote jar ao gerá-lo
-M Não gera um arquivo de manifesto (Manifest.mf) para todos os arquivos. Este parâmetro é igual à configuração que ignora o parâmetro -m.
-i cria um arquivo de índice para o arquivo jar especificado
-C significa ir para o diretório correspondente para executar o comando jar, que é equivalente a cd para esse diretório e, em seguida, executar o comando jar sem -C
2. Exemplos de uso de jarros:
(1) Criar pacote jar
jar cf olá.jar olá
Use o diretório de teste para gerar o pacote hello.jar. Se hello.jar existir, ele será substituído.
(2) Criar e exibir o processo de embalagem
jar cvf olá.jar olá
Use o diretório hello para criar o pacote hello.jar e mostre um exemplo do processo de criação:
E:/>jar cvf olá.jar olá
Manifesto
Adicionar: olá/(ler = 0) (escrever = 0) (0% armazenado)
Adicionado: hello/TestServlet2.class (leitura = 1497) (gravação = 818) (compactado em 45%)
Adicionado: hello/HelloServlet.class (read = 1344) (write = 736) (compactado em 45%)
Adicionado: hello/TestServlet1.class (leitura = 2037) (gravação = 1118) (compactado em 45%)
(3) Exibir pacote jar:
jar tvf hello.jar Visualize o conteúdo do pacote hello.jar O pacote jar especificado deve realmente existir, caso contrário ocorrerá FileNoutFoundException.
(4) Descompacte o pacote jar:
jar xvf olá.jar
Descompacte hello.jar para o diretório atual
(5) Adicione arquivos ao jar:
jar uf hello.jar HelloWorld.java
Adicione HelloWorld.java ao pacote hello.jar
(6) Crie um pacote jar de conteúdo descompactado:
jar cvf0 olá.jar *.class
Gere um pacote jar descompactado usando todos os arquivos .class no diretório atual
(7) Crie um pacote jar com arquivo manifest.mf:
jar cvfm olá.jar manifesto.mf olá
O pacote jar criado possui um diretório META-INF adicional, e o diretório META-INF possui um arquivo manifest.mf adicional. Quanto à função de manifest.mf, ela será mencionada mais adiante.
(8) Ignore o arquivo manifest.mf:
jar cvfM olá.jar olá
O pacote jar gerado não inclui o diretório META-INF e o arquivo manifest.mf.
(9) Adicionar aplicativo -C:
jar cvfm olá.jar meumanifest.mf -C olá/
Significa mudar para o diretório hello e executar o comando jar.
(10)-i gera uma lista de índices para o arquivo jar:
Quando o conteúdo de um pacote jar é muito bom, você pode gerar um arquivo de índice para ele, o que parece muito simples.
jar, olá.jar
Após executar este comando, ele irá gerar um arquivo de índice denominado INDEX.LIST na pasta META-INF do pacote hello.jar. Ele irá gerar uma lista com o nome do pacote jar no topo.
(11) Exporte a lista de descompressão:
jar tvf hello.jar >hello.txt Se você quiser ver o processo detalhado de descompactação de um jar e o pacote jar for grande, as informações da tela piscarão. Neste momento, você pode enviar a lista para um arquivo e. lentamente aprecio!
(12)jar -cvf olá.jar olá/*
Por exemplo, a estrutura de diretórios original é a seguinte:
olá
|---com
|---organização
Originalmente, você queria empacotar apenas o diretório com e o diretório org, mas neste momento o comando jar será empacotado junto com hello. Todos deveriam prestar atenção a isso. O arquivo compactado gerado pelo comando jar incluirá o diretório após ele. Devemos entrar no diretório hello e executar o comando jar.
Nota: O usuário pode especificar o nome do arquivo manifest.mf arbitrariamente, mas o comando jar reconhece apenas Manifest.mf. Ele converterá o nome do arquivo especificado pelo usuário de acordo, para que o usuário não precise se preocupar.
3. Regras de gravação do arquivo Manifest.mf:
Você deve prestar atenção a alguns detalhes ao escrever manifest.mf. É muito exigente. Encontrei muitos erros aqui. Quem o torna tão mesquinho, então listo aqui para todos.
(1) Onde não pode haver linhas em branco ou espaços, a primeira linha não pode ser uma linha em branco (não pode haver uma linha em branco antes da primeira linha), não pode haver uma linha em branco entre as linhas e não pode haver uma linha em branco no o fim da linha.
(2) Deve haver uma linha em branco e a última linha deve ser uma linha em branco (basta adicionar um retorno de carro após inserir seu conteúdo)
(3) Deve haver um espaço
chave: o valor deve ser escrito com um espaço após o ponto e vírgula
4. Como usar classes em pacotes jar
Vamos escrever um pequeno exemplo, tão intuitivo!
classe final pública Pessoa{ public static int idade() { return 30 }}-> javac Pessoa.java->jar cvf pessoa.jar Pessoa.class
Transforme o arquivo acima em um pacote jar
Escreva outra classe para chamá-lo:
classe pública MinhaIdade{ public static void getAge() { System.out.println(Person.age() }});->javac MyAge.java ->java -classpath person.jar MyAge
Leitores interessados podem depurar este programa
5. Crie um pacote jar executável
Às vezes, quando você escreve um programa sozinho, há muitas classes com o tempo, você nem sabe qual é a classe principal. Além disso, pode haver muitas imagens ou outros arquivos usados, o que torna tudo confuso. para ler. Neste momento, você pode considerar transformá-lo em um pacote jar executável...
(1) Edite o arquivo manifest.mf e adicione a seguinte linha
Classe principal: MyApplet
Nota: O tamanho da classe principal é determinado, o espaço após os dois pontos e o Enter após MyApplet devem ser inseridos e salvos.
(2) Embalagem
jar cvfm FirstApplet.jar manifesto.mf MyApplet.class
Nota: manifest.mf é especificado como o caminho da classe (como: hello.Hello) ou nome do arquivo (applet) onde o arquivo Mani-Class: MyApplet está armazenado.
(3) Uso de jar executável
java -jar PrimeiroApplet.jar
Também pode ser usado em <applet></applet>:
<applet code=MyApplet archive=FirstApplet.jar width=200 height=100></applet>
Nota: A classe não é fornecida. Você pode simplesmente escrever um. Você pode decidir o nome da classe e o nome do pacote como desejar.
6. Amplie suas próprias aulas
No diretório de instalação do JDK/jre/lib/ext, o SUN oferece conveniência para expandir nossas próprias classes. Você pode digitar seus próprios arquivos de classe em pacotes .jar e colocá-los neste diretório. O carregador de classes é responsável pelo carregamento, e o carregador de classes ExtClassLoader é AppClassL O carregador pai do carregador de classes do carregador, AppClassLoader, é o principal responsável por carregar arquivos no caminho CLASSPATH, e o mecanismo usado em Java é delegar o carregador pai, para que os arquivos de classe no jar armazenado neste diretório não tenham nenhum settings., o carregador de classes pode encontrar o carregamento normal, não é muito conveniente, ha...
Se o seu .jar for para aplicativos de miniaplicativos, você poderá adicionar as duas linhas a seguir ao seu manifest.mf antes de empacotá-lo em um pacote jar.
Caminho de classe: FirstApplet.jarCaminho de classe: SecondApplet.jarMain-Class: MyApplet
Nota: O caminho da classe pode ser definido para vários itens, basta escrever o nome do pacote jar diretamente. A classe principal é usada principalmente quando há vários arquivos de classe .class no jar. Java não sabe qual é a classe principal, portanto, se houver apenas uma classe no pacote jar, é claro que sim. não precisa ser especificado.
A ordem em que Java chama as classes: Classes em java/lib/ext ---> Classes especificadas em Manifest.mf --> Classes no diretório atual --> Classes especificadas no conjunto CLASSPATH.
7. Chame o pacote jar na rede URL
(1) Gere a URL do pacote jar
URL u=nova URL("jar:"+"FirstAppplet.jar"+!/");
(2) Criar objeto jarURLConnection
JarURLConnection juc=(JarURLConnection)u.openConnection();
(3) Retorne o nome da classe principal no pacote jar
Atributos attr=juc.getMainAttributes();String name=attr.getValue("Mani-Class");
Certifique-se de que o atributo Mani-Class esteja configurado corretamente em manifest.mf em seu pacote jar. Novamente, você deve prestar atenção às regras.
(4) Crie um objeto Class com base no nome da classe principal obtido
Classe c=Class.forName(nome);
(5) Chame seu método principal de acordo com o objeto Class:
Método cm=c.getMethod("main",new Class[]{String.class}); cm.invoke(null,new Object[]{});
Dica: O texto acima utiliza conhecimento sobre o mecanismo de reflexão de reflexão. Se você estiver interessado em vários mecanismos de reflexão, poderá verificar o conteúdo relevante no pacote java.lang.reflect.
8. Dicas sobre como usar comandos JAR:
(1) jar cria arquivo ZIP compactado
jar cvfM TestZIP.jar teste
Basta adicionar o parâmetro M para não gerar conteúdo relacionado ao META-INF e depois alterar TestZIP.jar para TestZIP.zip. Não é muito simples....
(2) Use WinRAR para descompactar o arquivo .jar
Como dissemos acima, o arquivo JAR é um arquivo compactado especial, então é claro que pode ser descompactado usando algumas de nossas ferramentas de descompactação comumente usadas. Quanto a como descompactá-lo, não preciso lhe dizer.
(3) Use WinRAR para gerar arquivos .jar
Já dissemos que a principal diferença entre os pacotes JAR e os pacotes ZIP é que existe um diretório META-INF adicional no pacote JAR. Existe um arquivo manifest.mf no diretório META-INF. diretório e compactá-lo.
A estrutura do diretório é a seguinte:
TestJar
|--META-INF
|--manifest.mf
|--Arquivos de classe relacionados