O que causa o erro "Não é possível acessar o jarfile"?


136

Quero executar meu programa sem usar um IDE. Eu criei um arquivo jar e um arquivo jar executável. Quando clico duas vezes no arquivo exe jar, nada acontece e quando tento usar o comando no cmd, ele me dá o seguinte:

Error: Unable to access jarfile <path>

Eu uso o comando: java -jar Calculator.jar

Como eu criei o jar:

  1. Clique com o botão direito do mouse na pasta do projeto (Calculadora)
  2. Selecione
  3. Clique na pasta Java e selecione "Arquivo jar detectável" e, em seguida, selecione próximo
  4. Configuração de inicialização: Principal - Calculadora
  5. Criar destino de exportação
  6. Aperte "Finish" e lucre! Bem, na verdade não.

1
Parece que o Jar está corrompido de alguma forma, possivelmente perdendo a entrada do Manifest.
MadProgrammer

Você deve mostrar como criou os JARs, o que há neles e como tenta executar o programa. O código Java é irrelevante aqui.
Jochen

Você já tentou relançar o elcipse e recompilar? Às vezes, o Eclipse faz algumas coisas estranhas que podem ser evitadas ao reiniciar.
Matts

Acho o código difícil de ler e pensar. E qual o sentido de ter tudo em uma função principal estática e ter um método de instância única para limpar o console?
21412 Dave

1
Não tenho respostas para o meu problema, eu mesmo respondi e não há como mostrar minha apreciação nos comentários, além de agradecê-los por resposta. Releia seu comentário.
Joseph Smith

Respostas:


78

Eu encontrei esse problema ao executar meu arquivo Jar como

java -jar TestJar

ao invés de

java -jar TestJar.jar

A falta da extensão .jar também causa esse problema.


1
Essa é a resposta correta. A extensão .jar deve ser anexada ao nome do arquivo jar.
Abhijay Kumar

10
Nem sempre é a resposta correta, estou anexando-a e ela não funciona.
Alan B #

No meu caso, pensei que era um arquivo enquanto era uma pasta no console. O arquivo jar estava em uma pasta com o mesmo nome.
Willy Makend # 23/19

58

Fixo

Apenas coloquei em uma pasta diferente e funcionou.


62
Alguém pode explicar por que isso aconteceu?
Anastasios Andronidis

7
Parece que poderia ter sido um problema de permissão de arquivo, no entanto, acho total.
Aiden Fry

2
Eu tive um problema semelhante no Windows, usando o cygwin. Usos tão cygwin diferentes caminhos que o Windows /cygdrive/c/vs C:\ I fixas isso usando realpath --relative-to=$(pwd) path/to/jarfilePor isso, sempre vai impor uma iso caminho relativo usando/cygdrive/c/.../path/to/jarfile
Rik

1
Eu tive o mesmo problema, com o meu jar também, eu acidentalmente digitado incorretamente o caminho do frasco
Ori Wiesel

1
@Rik Seu comentário é útil, embora não funcione nos caminhos dos e no arquivo java no caminho do cygwin. A solução aqui serájava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n 12/09/19

31

[Possivelmente apenas para Windows]

Cuidado com os espaços no caminho, mesmo quando seu jar estiver no diretório de trabalho atual. Por exemplo, para mim, isso estava falhando:

java -jar myjar.jar

Consegui consertar isso dando o caminho completo e citado para o jar:

java -jar "%~dp0\myjar.jar" 

O crédito vai para esta resposta por me colocar no caminho certo ....


Obrigado por isso. Também é necessário fornecer o caminho completo no Linux, se você tentar executá-lo em um diretório diferente.
Pubudu 29/06

Esta resposta é parcialmente uma duplicata de uma resposta já dada a esta pergunta. Esta é a resposta anterior com o mesmo método: caminho completo citado. 06 de setembro '15 por @benez
sophievda

18

Eu tive esse problema no CygWin no Windows. Eu li em outro lugar que o Java não entende os caminhos CYGWIN ( /cygdrive/c/some/direm vez de C:\some\dir) - então eu usei um caminho relativo em vez disso: ../../some/dir/sbt-launch.jar.


Eu estava tendo esse problema exato no CygWin! Obrigado para sempre!
Rhyuk

1
Nos casos em que você precisa que o cygwin use caminhos formatados no Windows em vez de caminhos do cygwin, use o comando cygpath -w / path / here para converter o caminho no equivalente do Windows.
Jason Slobotski

@ JasonSlobotski obrigado pela dica, acho que seu comentário deve ser uma resposta por si só.
Roberto Bonvallet

14

Eu tive o mesmo problema ao tentar iniciar o arquivo jar. O caminho continha um espaço, então eu tive que colocar aspas. Ao invés de:

java -jar C:\Path to File\myJar.jar

eu tive que escrever

java -jar "C:\Path to File\myJar.jar"

As citações fizeram o truque para mim, pois eu também tinha espaços entre eles. Eu, então, tentou fazê-lo sem espaços no caminho e sem aspas e em seguida, ele também trabalhou
Timothy

Anno 2019: Esta solução me ajudou, com aspas! Sem aspas e sem espaços, não funciona no meu caso.
sophievda

11

Só me deparei com o mesmo problema tentando fazer um USB ruim ...

Eu tentei executar este comando no admin cmd

java -jar c:\fw\ducky\duckencode.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

Mas recebi este erro:

Error: unable to access jarfile c:\fw\ducky\duckencode.jar

Solução

1º passo

Clique com o botão direito do mouse no jarfile em questão. Clique em propriedades. Clique na guia desbloquear no canto inferior direito. O arquivo foi bloqueado porque foi baixado e não criado no meu PC.

2º passo

No cmd, alterei o diretório para o local do arquivo jar.

cd C:\fw\ducky\

Digitei dire vi o nome do arquivoduckencode.jar.jar

Então, no cmd, mudei o comando original para referenciar o arquivo .jar.jar

java -jar c:\fw\ducky\duckencode.jar.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

Esse comando executado sem mensagens de erro e o inject.bin que eu estava tentando criar agora estava localizado no diretório

Espero que isto ajude.


Obrigado, meu também foi nomeado como apktool.jar.jar
Mayank Kumar

8

Eu tive um problema semelhante e até tentei executar meu CMD com direitos de administrador, mas ele não resolveu o problema.

O básico é que não se esqueça de alterar o diretório em cmd para o diretório atual onde está o seu arquivo jar.

Execute as seguintes etapas:

Copie o arquivo jar para o Desktop.

  1. Execute o CMD

  2. comando type cd desktp

  3. então digite java -jar filename.jar

Isso deve funcionar.


Edit : Do JDK-11 em diante ( JEP 330 : Iniciar programas de código-fonte de arquivo único)

Desde o Java 11, a ferramenta de linha de comando java conseguiu executar um código-fonte de arquivo único diretamente. por exemplo

java filename.java


5

Se você estiver usando o OSX, os arquivos baixados serão marcados com um sinalizador de segurança que impede a execução de aplicativos não assinados.

para verificar isso, você pode visualizar atributos estendidos no arquivo

$ ls -l@
-rw-r--r--@ 1 dave  staff  17663235 13 Oct 11:08 server-0.28.2-java8.jar
com.apple.metadata:kMDItemWhereFroms         619
com.apple.quarantine          68

Você pode limpar os atributos com

xattr -c file.jar


3

Isso também pode acontecer se você não fornecer adequadamente sua lista de parâmetros. Aqui está o que eu estava fazendo:

java -jar test@gmail.com testing_subject file.txt test_send_emails.jar

Em vez da versão correta:

java -jar test_send_emails.jar test@gmail.com testing_subject file.txt

3

às vezes acontece quando você tenta (executar ou criar) um arquivo .jar na pasta / libs clicando com o botão direito do mouse no android studio. você pode selecionar o menu suspenso na parte superior do android stuio e alterá-lo para app . Isso vai funcionar

insira a descrição da imagem aqui


2

Para mim, isso acontece se você usar caracteres poloneses nativos no nome da pasta que está no PATH. Talvez o uso de caracteres atípicos tenha sido a razão do problema.


2

Meu problema específico foi causado porque eu estava trabalhando com diretórios que envolviam links simbólicos (atalhos). Consequentemente, tentar java -jar ../../myJar.jarnão funcionou porque eu não estava onde pensava que estava.

Desconsiderando os caminhos de arquivo relativos, foi corrigido.


2

No meu caso, o nome do arquivo sugerido a ser usado estava jarFile*.jarna linha de comando. O arquivo na pasta era jarFile-1.2.3.jar. Então, renomeei o arquivo para jarFile. Então eu usei em jarFile.jarvez de jarFile*.jare então o problema foi resolvido


depois de fazer isso, não foi possível acessar o problema do arquivo jar resolvido.
Developine

2

Isso pode acontecer em uma máquina Windows quando você tem espaços nos nomes da pasta. A solução seria inserir o caminho entre "". Por exemplo:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"

2
isso não responde à pergunta, você deve usar comentários para solicitar mais informações.
AWD

2

Para evitar problemas de permissão, tente executá-lo como administrador. Isso funcionou para mim no Win10.


e o mac?
GvSharma 01/08/19

2

Eu sei que esta discussão é anos atrás e problema foi corrigido também. Mas espero que isso ajude outra pessoa no futuro, já que encontrei alguns problemas semelhantes enquanto tentava instalar o Oracle WebLogic 12c e o Oracle OFR no qual o instalador está no .jarformato. Para o meu caso, ele não foi agrupar o diretório JDK entre aspas ou simplesmente digitar.

Execute Command Promptcomo administrador e execute o comando neste formato. Verifique a sentença se houver erro de digitação.

"C:\Program Files\Java\jdk1.xxxxx\bin\java" -jar C:\Users\xxx\Downloads\xxx.jar

Se mostrar algo parecido JRE 1.xxx is not a valid JDK Java Home, verifique se as variáveis ​​do sistema JAVA_HOMEnas Variáveis ​​de ambiente estão apontando para o diretório JDK correto. O JDK 1.8 ou superior é recomendado (2018).

Uma linha útil aqui, você pode submetê-la: Por que a sua mostrando o seu JDK c: Program Files \ Java \ jre7 não é um JDK válida enquanto instaling WebLogic Server?


1

Eu tive um problema semelhante em que o TextMate ou algo substituiu as aspas duplas pelas aspas duplas unicode.

Alterar minhas SELENIUM_SERVER_JARaspas duplas unicode para aspas duplas regulares e isso resolveu meu problema.


1

isso ocorre porque você está procurando o arquivo no caminho errado 1. procure o caminho da pasta em que você colocou o arquivo 2. altere o diretório cd em cmd, use o caminho certo


1

Eu uso o NetBeans e tive o mesmo problema. Depois que eu executei o projeto de compilação e limpeza, meu programa foi executável. A documentação Java diz que o comando build / clean é para reconstruir o projeto do zero basicamente e remover todas as compilações anteriores. Eu espero que isso ajude. Além disso, eu li a documentação. A Oracle possui trilhas de aprendizado do NetBeans e Java. Muito útil. Boa sorte!


1

Talvez você tenha especificado a versão errada do seu jar.


1

Finalmente colei meu arquivo jar na mesma pasta do meu JDK para não precisar incluir os caminhos. Eu também tive que abrir o prompt de comando como administrador.

  1. Clique com o botão direito do mouse em Prompt de Comando e em "Executar como administrador"
  2. Navegue para o diretório em que você salvou seu jdk
  3. No prompt de comando, digite: java.exe -jar <jar file name>.jar

1

Mantenha o arquivo no mesmo diretório em que o está extraindo. Isso funcionou para mim.


0

Você tentou executá-lo sob privilégios de administrador? ou seja, executando o comando em "Executar como" e selecione administrador com credenciais de administrador apropriadas

trabalhou para mim


0

Eu estava tentando isso:

Depois de ler, gravar, executar privilégios:

chmod 777 java-repl.jar

alias jr="java -jar $HOME/Dev/java-repl/java-repl.jar"

Não foi possível acessar bla bla ..., porém, isso foi no Mac OS

Então eu tentei isso:

alias jr="cd $HOME/Dev/java-repl/ && java -jar java-repl.jar"


0

Isso não funcionou "Não foi possível acessar o jarfile"

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\ OneWireViewer.jar"

Isso funciona

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\OneWireViewer.jar"

A diferença é o espaço único na frente do OneWireViewer.jar, apesar de estar entre aspas e ter outros espaços.


0

Para mim, isso acontece porque eu o executo com a versão java padrão (7) e não com a versão java compilada (8) usada para criar este jar.

Então eu usei:

%Java8_64%\bin\java -jar myjar.jar

Em vez da versão java 7:

java -jar myjar.jar

0

Se você está na WSL e segue um guia que diz, diz o seguinte:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Você realmente precisa especificar o caminho completo, mesmo que o tenha fornecido na java.library.pathpeça.

java -Djava.library.path=/mnt/c/dynamodb_local/DynamoDBLocal_lib -jar /mnt/c/dynamodb_local/DynamoDBLocal.jar -sharedDb

0

Este é um problema de permissão, veja se o diretório está sob seu usuário. É por isso que está trabalhando em outra pasta!


-1

primeiro eu criei uma variável %JAVA_HOME% :

Quando você baixou o arquivo, verifique UNBLOCK TABas propriedades do arquivo, como mostrado acima na postagem "maartencls".

c:\users\my user\downloads\location of the file\all> java -jar yourfilename.jar

espero que isso resolva o problema :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.