Was verursacht den Fehler "Zugriff auf Jarfile nicht möglich"?

135

Ich möchte mein Programm ohne Verwendung einer IDE ausführen. Ich habe eine JAR-Datei und eine ausführbare JAR-Datei erstellt. Wenn ich auf die exe-JAR-Datei doppelklicke, passiert nichts, und wenn ich versuche, den Befehl in cmd zu verwenden, erhalte ich Folgendes:

Error: Unable to access jarfile <path>

Ich benutze den Befehl: java -jar Calculator.jar

Wie ich das Glas erstellt habe:

  1. Rechtsklick auf Projektordner (Rechner)
  2. Wählen
  3. Klicken Sie auf Java Folder, wählen Sie "Exectuable Jar File" und dann "Next"
  4. Konfiguration starten: Hauptrechner
  5. Exportziel erstellen
  6. Klicken Sie auf "Fertig stellen" und profitieren Sie! Nicht wirklich.
Joseph Smith
quelle
1
Klingt so, als ob das Glas in irgendeiner Weise beschädigt ist und möglicherweise der Manifest-Eintrag fehlt.
MadProgrammer
Sie sollten zeigen, wie Sie die JARs erstellt haben, was darin enthalten ist und wie Sie versuchen, das Programm auszuführen. Der Java-Code spielt hier keine Rolle.
Jochen
Haben Sie versucht, elcipse neu zu starten und neu zu kompilieren? Manchmal hat Eclipse einige seltsame Dinge getan, die durch einen Neustart vermieden werden können.
MattS
Ich finde den Code schwer zu lesen und darüber nachzudenken. Und was bringt es, alles in einer statischen Hauptfunktion zu haben und eine einzige Instanzmethode zum Löschen der Konsole zu haben?
Dave Newton
1
Ich habe keine Antworten auf mein Problem, ich habe es selbst beantwortet, und es gibt keine Möglichkeit, meine Wertschätzung in den Kommentaren zu zeigen, außer ihnen per Antwort zu danken. Bitte lesen Sie Ihren Kommentar noch einmal.
Joseph Smith

Antworten:

78

Ich war auf dieses Problem gestoßen, als ich meine Jar-Datei als ausgeführt hatte

java -jar TestJar

anstatt

java -jar TestJar.jar

Das Fehlen der Erweiterung .jar verursacht ebenfalls dieses Problem.

Vinay Kadalagi
quelle
1
Dies ist die richtige Antwort. Die Erweiterung .jar muss an den Namen der JAR-Datei angehängt werden.
Abhijay Kumar
10
Es ist nicht immer die richtige Antwort, ich hänge sie an und es funktioniert nicht.
Alan B
In meinem Fall dachte ich, es sei eine Datei, während es sich um einen Ordner auf der Konsole handelt. Die JAR-Datei befand sich in einem Ordner mit demselben Namen.
Willy Makend
58

Fest

Ich habe es einfach in einen anderen Ordner gelegt und es hat funktioniert.

Joseph Smith
quelle
62
Kann jemand erklären, warum das passiert ist?
Anastasios Andronidis
7
Klingt so, als ob es sich um ein Problem mit den Dateiberechtigungen handeln könnte.
Aiden Fry
2
Ich hatte ein ähnliches Problem bei Windows mit Cygwin. Also verwendet Cygwin andere Pfade als Windows /cygdrive/c/vs C:\ Ich habe dies durch die Verwendung von behoben. realpath --relative-to=$(pwd) path/to/jarfileEs wird also immer eine relative Pfad- ISO erzwingen, indem/cygdrive/c/.../path/to/jarfile
Rik
1
Ich hatte das gleiche Problem, auch mit meinem Glas, ich habe versehentlich den Weg des Glases falsch geschrieben
Ori Wiesel
1
@Rik Ihr Kommentar ist hilfreich, obwohl er in Dos-Pfaden und in Java-Dateien im Cygwin-Pfad nicht funktioniert. Die Lösung hier wird seinjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n
31

[Möglicherweise nur Windows]

Achten Sie auf Leerzeichen im Pfad, auch wenn sich Ihr Glas im aktuellen Arbeitsverzeichnis befindet. Zum Beispiel schlug dies für mich fehl:

java -jar myjar.jar

Ich konnte dies beheben, indem ich den vollständigen, zitierten Pfad zum Glas angab:

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

Dank an diese Antwort, die mich auf den richtigen Weg gebracht hat ...

Robert Brown
quelle
Danke dafür. Sie müssen auch unter Linux den vollständigen Pfad angeben, wenn Sie versuchen, ihn aus einem anderen Verzeichnis auszuführen.
Pubudu
Diese Antwort ist teilweise ein Duplikat einer bereits gegebenen Antwort auf diese Frage. Dies ist die frühere Antwort mit derselben Methode: Pfad in voller Anführungszeichen. 6. September 15 von @benez
Sophievda
18

Ich hatte dieses Problem unter CygWin in Windows. Ich habe an anderer Stelle gelesen, dass Java die CygWin-Pfade ( /cygdrive/c/some/diranstelle von C:\some\dir) nicht versteht - daher habe ich stattdessen einen relativen Pfad verwendet : ../../some/dir/sbt-launch.jar.

radumanolescu
quelle
Ich hatte genau dieses Problem in CygWin! Vielen Dank für immer!
Rhyuk
1
In Fällen, in denen Cygwin Windows-formatierte Pfade anstelle von Cygwin-Pfaden verwenden muss, können Sie den Pfad mit dem Befehl cygpath -w / path / here in das Windows-Äquivalent konvertieren.
Jason Slobotski
@ JasonSlobotski danke für den Tipp, ich denke dein Kommentar sollte eine Antwort für sich sein.
Roberto Bonvallet
14

Ich hatte das gleiche Problem beim Versuch, die JAR-Datei zu starten. Der Pfad enthielt ein Leerzeichen, daher musste ich Anführungszeichen setzen. Anstatt:

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

ich musste schreiben

java -jar "C:\Path to File\myJar.jar"
benez
quelle
Die Zitate haben mir geholfen, da ich auch dazwischen Leerzeichen hatte. Ich habe es dann ohne Leerzeichen im Pfad und ohne Anführungszeichen versucht und dann hat es auch funktioniert
Timothy
Anno 2019: Diese Lösung hat mir mit Anführungszeichen geholfen! Ohne Anführungszeichen und ohne Leerzeichen funktioniert es in meinem Fall nicht.
Sophievda
11

Ich bin gerade auf das gleiche Problem gestoßen, als ich versucht habe, einen schlechten USB-Stick herzustellen ...

Ich habe versucht, diesen Befehl in admin cmd auszuführen

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

Habe aber diesen Fehler bekommen:

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

Lösung

1. Schritt

Klicken Sie mit der rechten Maustaste auf das betreffende Jarfile. Klicken Sie auf Eigenschaften. Klicken Sie auf die Registerkarte zum Entsperren in der unteren rechten Ecke. Die Datei wurde blockiert, da sie heruntergeladen und nicht auf meinem PC erstellt wurde.

2. Schritt

Im cmd habe ich das Verzeichnis geändert, in dem sich die JAR-Datei befindet.

cd C:\fw\ducky\

Dann tippte ich dirund sah, dass die Datei benannt wurdeduckencode.jar.jar

Also habe ich in cmd den ursprünglichen Befehl geändert, um auf die Datei zu verweisen .jar.jar

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

Dieser Befehl wurde ohne Fehlermeldungen ausgeführt, und die von mir erstellte Datei injizieren.bin befand sich jetzt im Verzeichnis.

Hoffe das hilft.

Leon Thomas
quelle
Danke, auch meine wurde als apktool.jar.jar
Mayank Kumar
8

Ich hatte ein ähnliches Problem und habe sogar versucht, mein CMD mit Administratorrechten auszuführen, aber es hat das Problem nicht gelöst.

Das Grundlegende ist, dass Sie sicherstellen, dass Sie das Verzeichnis in cmd in das aktuelle Verzeichnis ändern dem sich Ihre JAR-Datei befindet.

Führen Sie die folgenden Schritte aus:

1.Kopieren Sie die JAR-Datei auf den Desktop.

  1. Führen Sie CMD aus

  2. Typ Befehl cd desktp

  3. Geben Sie dann ein java -jar filename.jar

Das sollte funktionieren.


Bearbeiten : Ab JDK-11 ( JEP 330 : Starten von Single-File-Quellcode-Programmen)

Seit Java 11 kann das Java-Befehlszeilentool einen Quellcode für eine einzelne Datei direkt ausführen. z.B

java filename.java
Vishwa Ratna
quelle
5

Das hat bei mir funktioniert.

cd /path/to/the/jar/

java -jar ./Calculator.jar
Bastian Cáceres Pino
quelle
5

Wenn Sie OSX verwenden, werden heruntergeladene Dateien mit einem Sicherheitsflag versehen, das die Ausführung nicht signierter Anwendungen verhindert.

Um dies zu überprüfen, können Sie erweiterte Attribute in der Datei anzeigen

$ 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

Sie können dann die Attribute mit löschen

xattr -c file.jar
Nick Fox
quelle
3

Dies kann auch passieren, wenn Sie Ihre Parameterliste nicht ordnungsgemäß angeben. Folgendes habe ich getan:

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

Anstelle der richtigen Version:

java -jar test_send_emails.jar test@gmail.com testing_subject file.txt
Büffel
quelle
3

Manchmal passiert es, wenn Sie versuchen, eine .jar-Datei im Ordner / libs auszuführen (zu erstellen oder zu erstellen), indem Sie in Android Studio mit der rechten Maustaste darauf klicken. Sie können das Dropdown-Menü oben auf Android stuio auswählen und in App ändern . Das wird funktionieren

Geben Sie hier die Bildbeschreibung ein

anand krish
quelle
2

Für mich passiert es, wenn Sie native polnische Zeichen im Ordnernamen verwenden, der sich im PFAD befindet. Vielleicht war die Verwendung untypischer Zeichen der Grund für das Problem.

Huxwell
quelle
2

Mein spezielles Problem wurde verursacht, weil ich mit Verzeichnissen arbeitete, die symbolische Links (Verknüpfungen) enthielten. Folglich java -jar ../../myJar.jarfunktionierte der Versuch nicht, weil ich nicht dort war, wo ich dachte, dass ich war.

Das Ignorieren relativer Dateipfade hat das Problem behoben.

MattSayar
quelle
2

In meinem Fall befand sich der vorgeschlagene Dateiname jarFile*.jarin der Befehlszeile. Die Datei im Ordner war jarFile-1.2.3.jar. Also habe ich die Datei umbenannt in jarFile. Dann habe ich jarFile.jarstatt jarFile*.jarund dann wurde das Problem behoben

Suku
quelle
Danach wurde mein Problem mit dem Zugriff auf die JAR-Datei behoben.
Developine
2

Dies kann auf einem Windows-Computer passieren, wenn die Namen des Ordners Leerzeichen enthalten. Die Lösung wäre, den Pfad zwischen "" einzugeben. Beispielsweise:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"
assaf
quelle
2
Dies beantwortet die Frage nicht. Sie sollten Kommentare verwenden, um weitere Informationen anzufordern.
awd
2

Versuchen Sie, es als Administrator auszuführen, um Berechtigungsprobleme zu vermeiden. Das hat bei Win10 bei mir funktioniert.

Gico
quelle
Was ist mit Mac?
GvSharma
2

Ich weiß, dass dieser Thread vor Jahren ist und das Problem wurde ebenfalls behoben. Ich hoffe jedoch, dass dies in Zukunft jemand anderem helfen würde, da ich bei der Installation von Oracle WebLogic 12c und Oracle OFR, in denen das Installationsprogramm im .jarFormat vorliegt, auf ähnliche Probleme gestoßen bin . In meinem Fall wurde das JDK-Verzeichnis entweder nicht in Anführungszeichen gesetzt oder einfach nur getippt.

Führen Sie Command Promptals Administrator aus und führen Sie den Befehl in diesem Format aus. Überprüfen Sie den Satz, wenn ein Tippfehler vorliegt.

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

Wenn etwas wie angezeigt wird JRE 1.xxx is not a valid JDK Java Home, stellen Sie sicher, dass die Systemvariablen für JAVA_HOMEin Umgebungsvariablen auf das richtige JDK-Verzeichnis verweisen. JDK 1.8 oder höher wird empfohlen (2018).

Ein nützlicher Thread hier, auf den Sie möglicherweise verweisen: Warum ist das Anzeigen Ihres JDK c: program files \ java \ jre7 beim Installieren des Weblogic-Servers kein gültiges JDK?

Boosted Nub
quelle
1

Ich hatte ein ähnliches Problem, bei dem TextMate oder etwas anderes die doppelten Anführungszeichen durch die doppelten Unicode-Anführungszeichen ersetzte.

Das Ändern meiner SELENIUM_SERVER_JARvon den Unicode-Anführungszeichen in reguläre Anführungszeichen und das löste mein Problem.

TankorSmash
quelle
1

Dies liegt daran, dass Sie nach der Datei im falschen Pfad suchen. 1. Suchen Sie nach dem Pfad des Ordners, in dem Sie die Datei abgelegt haben. 2. Ändern Sie die Verzeichnis-CD in cmd. Verwenden Sie den richtigen Pfad

Felipe
quelle
1

Ich benutze NetBeans und hatte das gleiche Problem. Nachdem ich das Build and Clean-Projekt ausgeführt hatte, war mein Programm ausführbar. In der Java-Dokumentation heißt es, dass der Befehl build / clean dazu dient, das Projekt von Grund auf neu zu erstellen und frühere Kompilierungen zu entfernen. Ich hoffe das hilft. Außerdem würde ich die Dokumentation lesen. Oracle verfügt über NetBeans- und Java-Lernpfade. Sehr hilfreich. Viel Glück!

user8315373
quelle
1

Möglicherweise haben Sie die falsche Version Ihres Glases angegeben.

cosbor11
quelle
1

Schließlich habe ich meine JAR-Datei in denselben Ordner wie mein JDK eingefügt, sodass ich die Pfade nicht einschließen musste. Ich musste auch die Eingabeaufforderung als Administrator öffnen.

  1. Klicken Sie mit der rechten Maustaste auf Eingabeaufforderung und klicken Sie auf "Als Administrator ausführen".
  2. Navigieren Sie zu dem Verzeichnis, in dem Sie Ihr JDK gespeichert haben
  3. Geben Sie in der Eingabeaufforderung Folgendes ein: java.exe -jar <jar file name>.jar
Michaela Burns
quelle
1

Bewahren Sie die Datei in demselben Verzeichnis auf, in dem Sie sie extrahieren. Das hat bei mir funktioniert.

Aishwary Joshi
quelle
0

Haben Sie versucht, es unter Administratorrechten auszuführen? Führen Sie den Befehl unter "Ausführen als" aus und wählen Sie dann den Administrator mit den richtigen Administratoranmeldeinformationen aus

arbeitete für mich

Nick_Stubborn_Mex.
quelle
0

Ich habe das versucht:

Nachdem Sie die Datei gelesen, geschrieben und privilegiert haben:

chmod 777 java-repl.jar

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

Bla bla ... konnte nicht aufgerufen werden, dies war jedoch unter Mac OS möglich

Also habe ich das versucht:

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

Kinglee
quelle
0

Dies funktionierte nicht. "Zugriff auf Jarfile nicht möglich"

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

Das funktioniert

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

Der Unterschied besteht darin, dass das einzelne Leerzeichen vor OneWireViewer.jar nicht aushält, dass es von Anführungszeichen umgeben ist und sogar andere Leerzeichen enthält.

Angar
quelle
0

Für mich passiert es, weil ich es mit der Standard-Java-Version (7) und nicht mit der kompilierten Java-Version (8) ausführe, die zum Erstellen dieses JAR verwendet wird.

Also habe ich verwendet:

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

Anstelle der Java 7-Version:

java -jar myjar.jar
Adir D.
quelle
0

Wenn Sie in der WSL sind und einem Leitfaden folgen, der Folgendes sagt:

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

Sie müssen tatsächlich den vollständigen Pfad angeben, obwohl Sie ihn im java.library.pathTeil angegeben haben.

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

Zuerst habe ich eine Variable erstellt %JAVA_HOME% :

UNBLOCK TABStellen Sie beim Herunterladen der Datei sicher, dass Sie die Dateieigenschaften wie oben im Beitrag "maartencls" gezeigt einchecken.

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

hoffe das wird das Problem lösen :)

mouf low
quelle
-1

Erster Lauf: java -version

und dann ausführen: java -jar Calculator.jar

Das hat bei mir funktioniert.

Sruthy
quelle
Nicht sicher, warum das java -versionhier benötigt wird? Laufen java -jar Calculator.jarist auch das, was das OP getan hat und was nicht ...
ArielGro