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.
Joseph Smith
fonte
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.

Vinay Kadalagi
fonte
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.

Joseph Smith
fonte
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 ....

Robert Brown
fonte
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.

radumanolescu
fonte
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"
benez
fonte
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.

Leon thomas
fonte
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
Vishwa Ratna
fonte
5

Isso funcionou para mim.

cd /path/to/the/jar/

java -jar ./Calculator.jar
Bastian Cáceres Pino
fonte
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
nick fox
fonte
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
Búfalo
fonte
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

anand krish
fonte
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.

Huxwell
fonte
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.

MattSayar
fonte
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

suku
fonte
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"
assaf
fonte
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.

Gico
fonte
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?

Boosted Nub
fonte
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.

TankorSmash
fonte
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

felipe
fonte
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!

user8315373
fonte
1

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

cosbor11
fonte
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
Michaela Burns
fonte
1

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

Aishwary joshi
fonte
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

Nick_Stubborn_Mex.
fonte
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"

Kinglee
fonte
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.

angar
fonte
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
Adir D
fonte
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
Pureferret
fonte
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!

Dimitrios
fonte
-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 :)

mouf baixo
fonte