executa o programa compactado no arquivo sh

0

Eu baixei o jgit compactado no arquivo sh e o executei no mingw. Eu assisti na lista de processos que o processo java foi iniciado apenas com a classe principal e os parâmetros

"c:\Program Files\Java\jdk1.6.0_26\bin\java.exe" org.eclipse.jgit.pgm.Main diff master

Eu verifiquei o diretório atual do processo para a classe principal descompactada, não havia nada! Onde a classe principal está localizada no sistema de arquivos?

    
por misha nesterenko 14.01.2012 / 11:39

1 resposta

1

Define o caminho da classe para o caminho do arquivo .sh na linha 88 do arquivo .sh .

this_script='which "$0" 2>/dev/null'
[ $? -gt 0 -a -f "$0" ] && this_script="$0"
cp=$this_script

[...]

CLASSPATH="$cp"
export CLASSPATH

Não há necessidade de "descompactar" a classe principal.

Ele usa um truque para combinar um script de shell e os dados JAR / ZIP reais em um único arquivo: Ele usa o fato de que um arquivo ZIP é estrutura central de dados está no seu final. O leitor de arquivos zip / jar simplesmente sobre o script de shell "dados de lixo" no início.

Often the first thing in a zip file is a zip entry, which can be identified easily by its signature. But it is not necessarily the case that a zip file begins with a zip entry, and is not required by the zip specification.

Contanto que o código do script de shell exit s antes do início dos dados zip / jar , o shell não se preocupe com os "dados de lixo" após a parte do script de shell do arquivo. / p>     

por 14.01.2012 / 12:58