Depois de aprender o comando jar, tenho uma compreensão mais profunda do conceito de pacote jar

Quando eu aprendi Java, o conceito de pacote jar era muito vago. Buscando várias explicações, todos diziam que é um formato de compressão, assim como o formato de compressão do zip. Acontece que a ferramenta de descompressão pode descompactar o pacote jar.
Também há dúvidas de que jar é um formato compactado, então por que não usar o zip diretamente?
Então deveria ser diferente.Eu pesquisei muitos artigos sobre embalagens de jarros, mas as explicações não eram claras o suficiente e não provocaram minha profunda impressão.
Até ver o comando jar por acaso e pesquisar artigos sobre o comando jar, finalmente encontrei um lampejo de luz. A seguir está um registro do uso do comando jar. Na verdade, existem muitas ferramentas IDE que basicamente não não precisa de operação manual. O comando jar também causa desconhecimento do pacote jar.

Explicação do conceito

  • O
    nome completo do pacote jar jar é JavaTM Archive file, e o nome completo do java archive
    war é Web Archive file.
    Também quero dizer algo sobre arquivos web . Isso realmente é para compactar os arquivos para fácil gerenciamento, mas há existem diferenças. Existem alguns arquivos especiais no jar e nos registros. Algumas informações especiais, como o arquivo META-INF / MANIFEST.MF, registram algumas informações especiais e têm um formato fixo. O comando java pode analisar o conteúdo e o significado de o arquivo.
Manifest-Version: 1.0   //版本
Created-By: Apache Ant 1.5.1  //声明该文件的生成者,jar命令行工具生成的
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path:  commons-beanutils.jar commons-collections.jar commons-dig
 ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
 truts-legacy.jar //依赖jar
Build-Jdk: 1.8.0_226 //jdk编译版本
Main-Class: com.sidaier.vlook.Estimate //main入口类,可执行jar包

 

Regras do arquivo MF
1. Não deve haver outros espaços e linhas em branco
2. O par de valores-chave deve ser chave + dois pontos + espaço + valor
3. Deve haver duas linhas em branco no final

  • Pacote pacote
    pacote é um tipo de mecanismo de desduplicação em arquivos java e basicamente não tem nada a ver com jar. Quando eu estava apenas aprendendo, era bobo e confuso. Pacote é um namespace e distingue principalmente as classes java. O nome completo da classe java contém pacote., A primeira linha do arquivo java é usada para declarar o pacote. Se em pacotes jar diferentes, o pacote é o mesmo e o nome da classe é o mesmo, o jvm irá considerá-lo como a mesma classe.
package com.sidaier.test;//包名

public class TestPackage
{
    
    
	public static void main(String[] args){
    
    
		System.out.println("test......");
	}
}

comando jar

Análise de comando

O Win abre a janela cmd, digite o comando jar, a seguinte explicação aparecerá

Uso: jar {ctxui} [vfmn0PMe] [arquivo jar] [arquivo de manifesto] [ponto de entrada] [-C dir] arquivos…
opções:
-c criar novo arquivo
-t lista de arquivos diretório
-x extrair do arquivo O especificado (ou todos) arquivos
-u atualizar o arquivo existente (atualizar MANIFEST.MF, adicionar conteúdo ao arquivo MF existente)
-v gerar saída detalhada na saída padrão
-f especificar o nome do arquivo do arquivo
-m incluir o arquivo de lista especificado Listar informações (deve estar de acordo com o formato do arquivo MANIFEST.MF, caso contrário, não será compactado, regenere) MANIFEST.MF
-n Depois de criar um novo arquivo, execute Pack200 Normalization
-e Especifique o aplicativo para o aplicativo independente agrupado em o arquivo jar executável Ponto de entrada -
0 é armazenado apenas; não use nenhuma compactação ZIP
-P retém o '/' (caminho absoluto) e "..." (diretório pai) inicial no nome do arquivo. O componente
-M não criar um arquivo de manifesto de entrada (MANIFEST.MF)
- i Gerar informações de índice para o arquivo jar especificado
-C Mude para o diretório especificado e inclua os seguintes arquivos

Se algum arquivo for um diretório, ele será processado recursivamente.
A ordem especificada do nome do arquivo de manifesto, nome do arquivo archive e nome do ponto de entrada é a mesma que a ordem especificada das tags 'm', 'f' e 'e'.

Exemplo 1: Arquive dois arquivos de classe em um arquivo denominado classes.jar:
jar cvf classes.jar Foo.class Bar.class
Exemplo 2: Use o arquivo de manifesto existente 'meu manifesto' e adicione os arquivos no diretório foo / Todos os arquivos são arquivados
in'classes.jar ': jar cvfm classes.jar mymanifest -C foo /.

comando javac

javac -d . TestPackage.java
//这个命令主要是生成包路径

Insira a descrição da imagem aqui

comando jar

jar -cvf test.jar TestPackage.class

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq125281823/article/details/108246017
Recomendado
Clasificación