Java do terminal: “Não é possível acessar jarfile Example.jar”

0

Sou novato quando se trata de usar o Java no Linux. Eu clonei um repositório no qual estou interessado em trabalhar e não consigo executar o código da minha máquina. O comando que estou tentando é:

java -Djava.library.path=/home/myname/path/to/project -jar example.jar 

O erro que estou recebendo é:

Error: Unable to access jarfile example.jar
Primeiro eu pensei que era uma coisa de permissão, então eu tentei executar o comando com sudo (tenho o mesmo erro), eu também vi um exemplo com o caminho de arquivo entre aspas, então eu tentei isso, mas também recebi o mesmo erro.

Eu examinei os arquivos do projeto e, na verdade, não há um arquivo chamado "example.jar". Existe um comando que eu deveria executar primeiro para gerá-lo?

Agradecemos antecipadamente por sua ajuda!

    
por ellen 19.04.2018 / 06:53

1 resposta

1

Sim, para executar uma jarra, ela precisa existir.

Ao criá-lo, você precisa combinar a estrutura de diretórios com a estrutura do pacote.

Por exemplo, seus diretórios podem ser:

/home/ellen/proj/java/foo/example/src/example/Foo.java 
/home/ellen/proj/java/foo/example/src/example/util/MyList.java 

para fontes e para arquivos de classe:

/home/ellen/proj/java/foo/example/classes/example/Foo.class
/home/ellen/proj/java/foo/example/classes/example/util/MyList.class

(muitas vezes você encontra classes em um ../bin/ .. em vez de ../classes/ .. pasta nomeada ou arquivos de origem e classe são misturados nos mesmos diretórios)

correspondente a uma estrutura de pacotes:

package example
package example.util

você deve mover para o diretório base da hierarquia:

cd /home/ellen/proj/java/foo/example/classes

ou defina-o com o parâmetro -C jar -C /home/ellen/proj/java/foo/example/classes ... ou a partir do início jar -C proj/java/foo/example/classes ... como caminho relativo.

Você cria o arquivo jar, por exemplo, com:

jar -cf example.jar *.class

e inspecione com:

jar -tf example.jar 

Observe que há um arquivo de manifesto, gerado e útil automaticamente, como um modelo, no qual você pode adicionar as informações da sua classe principal, se tiver, mas que é bastante rigorosa sobre qual é a sintaxe (superior / minúsculas, quebras de linha).

Manifest-Version: 1.0
Created-By: 9-internal (Oracle Corporation)    
Main-Class: example.Main

Essa entrada de classe principal deve ser adicionada, se você quiser executá-la sem especificar a classe principal:

java -jar example.jar 

ou então você tem que usar:

java -cp example.jar example.Main

Em essência, um arquivo jar é um arquivo zip e pode ser trabalhado com essas ferramentas.

Uma separação limpa de src / e bin / files é útil, quando você tem mais de um punhado de classes e provavelmente uma profunda estrutura de pacotes.

 jar -cf example.jar -C classes . 

irá, então, começar nas classes de diretório / incluir tudo o que é normalmente o que você deseja. (exemplo / classe, exemplo / util / .class, exemplo / net / * classe ...)

 jar --help 

informa sobre a sintaxe.

    
por user unknown 19.04.2018 / 08:09