Quelles sont les causes de l'erreur «Impossible d'accéder au fichier jar»?


136

Je veux exécuter mon programme sans utiliser d'IDE. J'ai créé un fichier jar et un fichier jar exécutable. Lorsque je double-clique sur le fichier jar exe, rien ne se passe et lorsque j'essaye d'utiliser la commande dans cmd, cela me donne ceci:

Error: Unable to access jarfile <path>

J'utilise la commande: java -jar Calculator.jar

Comment j'ai créé le pot:

  1. Faites un clic droit sur le dossier du projet (calculatrice)
  2. Sélectionner
  3. Cliquez sur le dossier Java et sélectionnez "Fichier Jar exécutable", puis sélectionnez suivant
  4. Configuration de lancement: Principal - Calculatrice
  5. Créer une destination d'exportation
  6. Appuyez sur "Terminer" et profitez! Eh bien pas vraiment.

1
On dirait que le Jar est corrompu d'une certaine manière, il manque peut-être l'entrée Manifest.
MadProgrammer

Vous devez montrer comment vous avez créé les fichiers JAR, ce qu'ils contiennent et comment vous essayez d'exécuter le programme. Le code Java n'est pas pertinent ici.
Jochen

Avez-vous essayé de relancer elcipse et de recompiler? Parfois, Eclipse a fait des choses étranges qui peuvent être évitées en relançant.
MattS

Je trouve le code difficile à lire et à penser. Et quel est l'intérêt d'avoir tout dans une fonction principale statique et d'avoir une seule méthode d'instance pour effacer la console?
Dave Newton

1
Je n'ai pas de réponses à mon problème, j'y ai répondu moi-même, et il n'y a aucun moyen de montrer mon appréciation dans les commentaires, à part les remercier via la réponse. Veuillez relire votre commentaire.
Joseph Smith

Réponses:


79

J'avais rencontré ce problème lorsque j'avais exécuté mon fichier Jar en tant que

java -jar TestJar

au lieu de

java -jar TestJar.jar

L'absence de l'extension .jar provoque également ce problème.


1
C'est la bonne réponse. L'extension .jar doit être ajoutée au nom du fichier jar.
Abhijay Kumar

10
Ce n'est pas toujours la bonne réponse, je l'ajoute et cela ne fonctionne pas.
Alan B

Dans mon cas, je pensais que c'était un fichier alors que c'était un dossier sur la console. Le fichier jar se trouvait dans un dossier portant le même nom.
Willy Makend

58

Fixé

Je viens de le placer dans un dossier différent et cela a fonctionné.


62
Quelqu'un peut-il expliquer pourquoi cela s'est produit?
Anastasios Andronidis

7
On dirait que cela aurait pu être un problème d'autorisations de fichiers, mais une estimation totale.
Aiden Fry le

2
J'ai eu un problème similaire sur Windows, en utilisant cygwin. Donc, cygwin utilise des chemins différents de Windows /cygdrive/c/vs C:\ j'ai corrigé cela en utilisant realpath --relative-to=$(pwd) path/to/jarfileDonc il appliquera toujours un chemin relatif iso en utilisant/cygdrive/c/.../path/to/jarfile
Rik

1
J'ai eu le même problème, avec mon pot aussi, j'ai accidentellement mal saisi le chemin du pot
Ori Wiesel

1
@Rik Votre commentaire est utile bien qu'il ne fonctionne pas dans les chemins dos et le fichier java dans le chemin cygwin. La solution ici serajava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n

31

[Peut-être Windows uniquement]

Méfiez-vous des espaces dans le chemin, même lorsque votre fichier jar est dans le répertoire de travail actuel. Par exemple, pour moi, cela a échoué:

java -jar myjar.jar

J'ai pu résoudre ce problème en donnant le chemin complet et cité du pot:

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

Le mérite revient à cette réponse pour m'avoir mis sur la bonne voie ....


Merci pour cela. Vous devez également donner le chemin complet sous Linux, si vous essayez de l'exécuter à partir d'un répertoire différent.
Pubudu le

Cette réponse est en partie le double d'une réponse déjà donnée à cette question. C'est la réponse précédente avec la même méthode: le chemin complet entre guillemets. 6 sept. 15 par @benez
sophievda

18

J'ai eu ce problème sous CygWin sous Windows. J'ai lu ailleurs que Java ne comprend pas les chemins Cygwin ( au /cygdrive/c/some/dirlieu de C:\some\dir) - donc j'utilisé un chemin relatif au lieu: ../../some/dir/sbt-launch.jar.


J'avais ce problème exact dans CygWin! Merci pour toujours!
Rhyuk

1
Dans les cas où vous avez besoin que cygwin utilise des chemins au format Windows au lieu des chemins cygwin, vous pouvez utiliser la commande cygpath -w / path / here pour convertir le chemin en l'équivalent Windows.
Jason Slobotski

@JasonSlobotski merci pour le tuyau, je pense que votre commentaire devrait être une réponse en soi.
Roberto Bonvallet

14

J'ai eu le même problème en essayant de lancer le fichier jar. Le chemin contenait un espace, j'ai donc dû placer des guillemets autour. Au lieu de:

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

je devais écrire

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

Les citations ont fait l'affaire pour moi car j'avais aussi des espaces entre les deux. Je l'ai ensuite essayé sans espaces dans le chemin et sans guillemets, puis cela a fonctionné aussi
Timothy

Anno 2019: Cette solution m'a aidé, avec des guillemets! Sans guillemets et sans espaces, cela ne fonctionne pas dans mon cas.
sophievda

11

Je viens de rencontrer le même problème en essayant de créer une mauvaise clé USB ...

J'ai essayé d'exécuter cette commande dans admin cmd

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

Mais j'ai cette erreur:

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

Solution

1ère étape

Cliquez avec le bouton droit sur le fichier jar en question. Cliquez sur Propriétés. Cliquez sur l'onglet de déblocage dans le coin inférieur droit. Le fichier a été bloqué, car il a été téléchargé et non créé sur mon PC.

2ème étape

Dans la cmd, j'ai changé le répertoire dans lequel se trouve le fichier jar.

cd C:\fw\ducky\

Puis j'ai tapé diret j'ai vu que le fichier était nomméduckencode.jar.jar

Donc, dans cmd, j'ai changé la commande d'origine pour référencer le fichier avec .jar.jar

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

Cette commande exécutée sans message d'erreur et l'inject.bin que j'essayais de créer se trouvait maintenant dans le répertoire.

J'espère que cela t'aides.


Merci, le mien aussi a été nommé apktool.jar.jar
Mayank Kumar

8

J'ai eu un problème similaire et j'ai même essayé d'exécuter mon CMD avec des droits d'administrateur, mais cela n'a pas résolu le problème.

La chose de base est que assurez-vous de changer le répertoire dans cmd en répertoire actuel où se trouve votre fichier jar.

Suivez les étapes suivantes:

1.Copiez le fichier jar sur le bureau.

  1. Exécutez CMD

  2. commande de type cd desktp

  3. puis tapez java -jar filename.jar

Cela devrait fonctionner.


Edit : à partir de JDK-11 ( JEP 330 : lancer des programmes de code source à fichier unique)

Depuis Java 11, l'outil de ligne de commande java est capable d'exécuter directement un code source à un seul fichier. par exemple

java filename.java


5

Si vous utilisez OSX, les fichiers téléchargés sont marqués d'un indicateur de sécurité qui empêche les applications non signées de s'exécuter.

pour vérifier cela, vous pouvez afficher les attributs étendus sur le fichier

$ 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

Vous pouvez ensuite effacer les attributs avec

xattr -c file.jar


3

Cela peut également arriver si vous ne fournissez pas correctement votre liste de paramètres. Voici ce que je faisais:

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

Au lieu de la version correcte:

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

3

Parfois, cela se produit lorsque vous essayez (d'exécuter ou de créer) un fichier .jar dans le dossier / libs en cliquant dessus avec le bouton droit dans le studio Android. vous pouvez sélectionner le menu déroulant en haut de android stuio et le changer en application . Cela fonctionnera

entrez la description de l'image ici


2

Pour moi, cela arrive si vous utilisez des caractères polonais natifs dans le nom de dossier qui se trouve dans le PATH. Alors peut-être que l'utilisation de caractères atypiques était la raison du problème.


2

Mon problème particulier était dû au fait que je travaillais avec des répertoires qui impliquaient des liens symboliques (raccourcis). Par conséquent, essayer java -jar ../../myJar.jarn'a pas fonctionné parce que je n'étais pas là où je pensais être.

Le fait de ne pas tenir compte des chemins de fichiers relatifs a résolu le problème.


2

Dans mon cas, le nom de fichier suggéré à utiliser était jarFile*.jardans la ligne de commande. Le fichier dans le dossier était jarFile-1.2.3.jar. J'ai donc renommé le fichier en jarFile. Ensuite, j'ai utilisé à la jarFile.jarplace de jarFile*.jarpuis le problème a été résolu


après cela, mon problème de fichier JAR est résolu.
Developine

2

Cela peut se produire sur une machine Windows lorsque vous avez des espaces dans les noms du dossier. La solution serait d'entrer le chemin entre "". Par exemple:

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

2
cela ne répond pas à la question, vous devez utiliser les commentaires pour demander plus d'informations.
awd

2

Pour éviter tout problème d'autorisation, essayez de l'exécuter en tant qu'administrateur. Cela a fonctionné pour moi sur Win10.


et mac?
GvSharma

2

Je sais que ce fil remonte à des années et que le problème a également été résolu. Mais j'espère que cela aiderait quelqu'un d'autre à l'avenir car j'ai rencontré des problèmes similaires pendant que j'essayais d'installer Oracle WebLogic 12c et Oracle OFR dans lequel son programme d'installation est au .jarformat. Pour le mien, il s'agissait soit de ne pas mettre le répertoire JDK entre guillemets, soit simplement de faute de frappe.

Exécutez en Command Prompttant qu'administrateur et exécutez la commande dans ce format. Vérifiez la phrase s'il y a une faute de frappe.

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

S'il affiche quelque chose comme JRE 1.xxx is not a valid JDK Java Home, assurez-vous que les variables système pour JAVA_HOMEdans Variables d'environnement pointent vers le répertoire JDK correct. JDK 1.8 ou supérieur est recommandé (2018).

Un fil utile ici, vous pouvez le consulter: Pourquoi son affichage de votre JDK c: program files \ java \ jre7 n'est pas un JDK valide lors de l'installation du serveur weblogic?


1

J'ai eu un problème similaire où TextMate ou quelque chose a remplacé les guillemets doubles par les guillemets doubles Unicode.

Changer mon SELENIUM_SERVER_JARdes guillemets doubles Unicode en guillemets doubles réguliers et cela a résolu mon problème.


1

c'est parce que vous recherchez le fichier dans le mauvais chemin 1. recherchez le chemin du dossier où vous avez placé le fichier 2. changez le répertoire cd dans cmd utilisez le bon chemin


1

J'utilise NetBeans et j'ai eu le même problème. Après avoir exécuté le projet build and clean, mon programme était exécutable. La documentation Java indique que la commande build / clean sert à reconstruire le projet à partir de zéro et à supprimer toutes les compilations antérieures. J'espère que ça aide. Aussi, j'avais lu la documentation. Oracle a des pistes d'apprentissage NetBeans et Java. Très utile. Bonne chance!


1

Peut-être avez-vous spécifié la mauvaise version de votre fichier jar.


1

J'ai finalement collé mon fichier jar dans le même dossier que mon JDK afin de ne pas avoir à inclure les chemins. J'ai également dû ouvrir l'invite de commande en tant qu'administrateur.

  1. Cliquez avec le bouton droit sur l'invite de commande et "Exécuter en tant qu'administrateur"
  2. Accédez au répertoire dans lequel vous avez enregistré votre jdk
  3. Dans le type d'invite de commande: java.exe -jar <jar file name>.jar

1

Conservez le fichier dans le même répertoire que celui où vous l'extrayez. Cela a fonctionné pour moi.


0

Avez-vous essayé de l'exécuter sous les privilèges d'administrateur? ce qui signifie, exécutez la commande dans «Exécuter en tant que», puis sélectionnez l'administrateur avec les informations d'identification d'administrateur appropriées

travaillé pour moi


0

J'essayais ceci:

Après avoir donné au fichier les privilèges de lecture, d'écriture, d'exécution:

chmod 777 java-repl.jar

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

Impossible d'accéder à bla bla ..., c'était sur Mac OS cependant

Alors j'ai essayé ceci:

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


0

Cela n'a pas fonctionné "Impossible d'accéder au fichier jar"

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

Cela fonctionne

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

La différence réside dans le seul espace devant OneWireViewer.jar, même s'il est entouré de guillemets et comporte même d'autres espaces.


0

Pour moi, cela se produit parce que je l'exécute avec la version java par défaut (7) et non avec la version java compilée (8) utilisée pour créer ce fichier jar.

J'ai donc utilisé:

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

Au lieu de la version java 7:

java -jar myjar.jar

0

Si vous êtes sur WSL et que vous suivez un guide qui dit, dit ceci:

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

Vous devez en fait spécifier le chemin complet, même si vous l'avez fourni dans la java.library.pathpièce.

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

0

Il s'agit d'un problème d'autorisation, voyez si le répertoire est sous votre utilisateur. C'est pourquoi travaille dans un autre dossier!


-1

j'ai d'abord créé une variable %JAVA_HOME% :

Lorsque vous avez téléchargé le fichier, assurez-vous de vérifier UNBLOCK TABles propriétés du fichier comme indiqué ci-dessus dans l'article "maartencls".

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

j'espère que cela résoudra le problème :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.