Cosa causa l'errore "Impossibile accedere al file jar"?


136

Voglio eseguire il mio programma senza usare un IDE. Ho creato un file jar e un file jar estettibile. Quando faccio doppio clic sul file jar di exe, non succede nulla e quando provo ad usare il comando in cmd mi dà questo:

Error: Unable to access jarfile <path>

Uso il comando: java -jar Calculator.jar

Come ho creato il barattolo:

  1. Fare clic con il tasto destro sulla cartella del progetto (Calcolatrice)
  2. Selezionare
  3. Fare clic su Cartella Java e selezionare "File Jar esente", quindi selezionare successivo
  4. Avvia configurazione: Principale - Calcolatrice
  5. Crea destinazione di esportazione
  6. Premi "Fine" e guadagna! Beh, non proprio.

1
Sembra che il Jar sia corrotto in qualche modo, forse manca la voce Manifest.
MadProgrammer,

Dovresti mostrare come hai creato i JAR, cosa c'è dentro e come si tenta di eseguire il programma. Il codice Java è irrilevante qui.
Jochen,

Hai provato a riavviare elcipse e ricompilare? A volte Eclipse ha fatto alcune cose strane che possono essere evitate rilanciando.
Matt

Trovo il codice difficile da leggere e da pensare. E qual è il punto di avere tutto in una funzione principale statica e avere un metodo a singola istanza per cancellare la console?
Dave Newton,

1
Non ho risposte al mio problema, ho risposto da solo e non c'è modo di mostrare il mio apprezzamento nei commenti, se non quello di ringraziarli tramite la risposta. Per favore rileggi il tuo commento.
Joseph Smith,

Risposte:


78

Avevo riscontrato questo problema quando avevo eseguito il mio file Jar come

java -jar TestJar

invece di

java -jar TestJar.jar

La mancanza dell'estensione .jar causa anche questo problema.


1
Questa è la risposta corretta L'estensione .jar deve essere aggiunta al nome del file jar.
Abhijay Kumar il

10
Non è sempre la risposta corretta, la sto aggiungendo e non funziona.
Alan B,

Nel mio caso ho pensato che fosse un file mentre era una cartella sulla console. Il file jar era in una cartella con lo stesso nome.
Willy Makend,

58

Fisso

L'ho appena inserito in un'altra cartella e ha funzionato.


62
Qualcuno può spiegare perché questo è successo?
Anastasios Andronidis,

7
Sembra che potrebbe essere stato un problema di autorizzazioni per i file, comunque ipotesi totale.
Aiden Fry,

2
Ho avuto un problema simile su Windows, usando Cygwin. Quindi Cygwin utilizza percorsi diversi rispetto a Windows /cygdrive/c/rispetto a C:\ I risolto usando Usando realpath --relative-to=$(pwd) path/to/jarfileIn tal modo si imporrà sempre un percorso iso relativo utilizzando/cygdrive/c/.../path/to/jarfile
Rik

1
Ho avuto lo stesso problema, anche con il mio vaso, ho accidentalmente sbagliato a scrivere il percorso del vaso
Ori Wiesel,

1
@Rik Il tuo commento è utile anche se non funziona nei percorsi dos e file java nel percorso cygwin. La soluzione qui saràjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n,

31

[Forse solo Windows]

Fai attenzione agli spazi nel percorso, anche quando il tuo vaso si trova nella directory di lavoro corrente. Ad esempio, per me questo non ha funzionato:

java -jar myjar.jar

Sono stato in grado di risolvere questo problema dando il percorso completo e citato al vaso:

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

Il merito va a questa risposta per avermi messo sulla strada giusta ....


Grazie per questo. È necessario fornire il percorso completo anche in Linux, se si tenta di eseguirlo da una directory diversa.
Pubudu,

Questa risposta è in parte un duplicato di una risposta già fornita su questa domanda. Questa è la risposta precedente con lo stesso metodo: percorso completo tra virgolette. 6 settembre 15 di @benez
sophievda

18

Ho riscontrato questo problema con CygWin in Windows. Ho letto altrove che Java non capisce i percorsi CygWin ( /cygdrive/c/some/dirinvece di C:\some\dir) - così ho usato un percorso relativo, invece: ../../some/dir/sbt-launch.jar.


Stavo riscontrando questo esatto problema in CygWin! Grazie per sempre!
Rhyuk,

1
Nei casi in cui è necessario che Cygwin utilizzi i percorsi formattati di Windows anziché i percorsi Cygwin, è possibile utilizzare il comando cygpath -w / path / here per convertire il percorso nell'equivalente di Windows.
Jason Slobotski

@JasonSlobotski grazie per il suggerimento, penso che il tuo commento dovrebbe essere una risposta a sé stante.
Roberto Bonvallet,

14

Ho avuto lo stesso problema durante il tentativo di avviare il file jar. Il percorso conteneva uno spazio, quindi ho dovuto inserire delle virgolette. Invece di:

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

ho dovuto scrivere

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

Le citazioni mi hanno aiutato poiché avevo anche degli spazi tra di loro. Allora l'ho provato senza spazi nel percorso e senza virgolette e poi ha funzionato anche
Timoteo

Anno 2019: questa soluzione mi ha aiutato, con virgolette! Senza virgolette e senza spazi non funziona nel mio caso.
sophievda,

11

Ho appena riscontrato lo stesso problema nel tentativo di creare una USB difettosa ...

Ho provato a eseguire questo comando in admin cmd

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

Ma ho ottenuto questo errore:

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

Soluzione

1 ° passo

Fare clic con il tasto destro del mouse sul file jar in questione. Fai clic su Proprietà. Fai clic sulla scheda Sblocca nell'angolo in basso a destra. Il file è stato bloccato, perché è stato scaricato e non creato sul mio PC.

2 ° passo

Nel cmd ho cambiato la directory in cui si trova il file jar.

cd C:\fw\ducky\

Quindi ho digitato dire ho visto il nome del fileduckencode.jar.jar

Quindi in cmd ho modificato il comando originale per fare riferimento al file .jar.jar

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

Quel comando eseguito senza messaggi di errore e inject.bin che stavo cercando di creare si trovava ora nella directory.

Spero che questo ti aiuti.


Grazie, anche il mio è stato chiamato apktool.jar.jar
Mayank Kumar il

8

Ho avuto un problema simile e ho anche provato a far funzionare il mio CMD con i diritti di amministratore, ma non ho risolto il problema.

La cosa fondamentale è che assicurati di cambiare la Directory in cmd nella directory corrente dove si trova il tuo file jar.

Procedi come segue:

1.Copia il file jar sul desktop.

  1. Esegui CMD

  2. digitare comando cd desktp

  3. quindi digitare java -jar filename.jar

Questo dovrebbe funzionare.


Modifica : da JDK-11 in poi ( JEP 330 : avvio di programmi in codice sorgente a file singolo)

Da Java 11, lo strumento da riga di comando java è stato in grado di eseguire direttamente un codice sorgente a file singolo. per esempio

java filename.java


5

Se si utilizza OSX, i file scaricati vengono contrassegnati con un contrassegno di sicurezza che impedisce l'esecuzione di applicazioni non firmate.

per verificare ciò è possibile visualizzare gli attributi estesi sul file

$ 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

È quindi possibile cancellare gli attributi con

xattr -c file.jar


3

Può succedere anche se non fornisci correttamente il tuo elenco di parametri. Ecco cosa stavo facendo:

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

Invece della versione corretta:

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

3

a volte succede quando si tenta di (eseguire o creare) un file .jar nella cartella / libs facendo clic con il tasto destro su Android Studio. puoi selezionare il menu a discesa nella parte superiore di Android Stuio e modificarlo in app . Questo funzionerà

inserisci qui la descrizione dell'immagine


2

Per me succede se usi i caratteri nativi polacchi nel nome utente che si trova nel PERCORSO. Quindi forse usare caratteri atipici era la ragione del problema.


2

Il mio problema particolare era causato dal fatto che stavo lavorando con directory che includevano collegamenti simbolici (scorciatoie). Di conseguenza, provare java -jar ../../myJar.jarnon ha funzionato perché non ero dove pensavo di essere.

Ignorando i relativi percorsi dei file, è stato corretto.


2

Nel mio caso il nome file suggerito da usare era jarFile*.jarnella riga di comando. Il file nella cartella era jarFile-1.2.3.jar. Quindi ho rinominato il file in jarFile. Quindi ho usato jarFile.jarinvece di jarFile*.jare quindi il problema è stato risolto


dopo aver fatto questo, il mio problema con il file jar non è stato risolto.
Sviluppa il

2

Può succedere su un computer Windows quando ci sono spazi nei nomi della cartella. La soluzione sarebbe quella di inserire il percorso tra "". Per esempio:

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

2
questo non risponde alla domanda, dovresti usare i commenti per chiedere maggiori informazioni.
awd

2

Per evitare problemi di autorizzazione, prova a eseguirlo come amministratore. Questo ha funzionato per me su Win10.


che dire di mac?
GvSharma,

2

So che questa discussione è di anni fa e anche il problema è stato risolto. Ma spero che questo possa aiutare qualcun altro in futuro poiché ho riscontrato alcuni problemi simili mentre provavo a installare Oracle WebLogic 12c e Oracle OFR in cui il suo programma di installazione è in .jarformato. Per il mio caso, non è stato racchiuso tra virgolette la directory JDK o semplicemente un errore di battitura.

Esegui Command Promptcome amministratore ed esegui il comando in questo formato. Ricontrolla la frase se c'è un errore di battitura.

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

Se mostra qualcosa di simile JRE 1.xxx is not a valid JDK Java Home, assicurati che le variabili di sistema per JAVA_HOMEin Variabili d'ambiente puntino alla directory JDK corretta. Si consiglia JDK 1.8 o successivo (2018).

Un thread utile qui, puoi riferirlo: Perché mostra il tuo JDK c: i file di programma \ java \ jre7 non è un JDK valido durante l'installazione del server weblogic?


1

Ho avuto un problema simile in cui TextMate o qualcosa ha sostituito le virgolette doppie con le virgolette doppie unicode.

Cambiare il mio SELENIUM_SERVER_JARdalle virgolette doppie unicode alle doppie virgolette regolari e questo ha risolto il mio problema.


1

questo perché stai cercando il file nel percorso sbagliato 1. cerca il percorso della cartella in cui hai inserito il file 2. cambia la directory cd in cmd usa il percorso giusto


1

Uso NetBeans e ho avuto lo stesso problema. Dopo aver eseguito il progetto build e clean, il mio programma era eseguibile. La documentazione Java afferma che il comando build / clean serve essenzialmente per ricostruire il progetto da zero e rimuovere eventuali compilazioni precedenti. Spero che aiuti. Inoltre, avrei letto la documentazione. Oracle ha percorsi di apprendimento NetBeans e Java. Molto utile. In bocca al lupo!


1

Forse hai specificato la versione sbagliata del tuo vaso.


1

Alla fine ho incollato il mio file jar nella stessa cartella del mio JDK, quindi non ho dovuto includere i percorsi. Ho anche dovuto aprire il prompt dei comandi come amministratore.

  1. Fare clic con il tasto destro del mouse su Prompt dei comandi e "Esegui come amministratore"
  2. Passa alla directory in cui hai salvato il tuo jdk
  3. Nel prompt dei comandi digitare: java.exe -jar <jar file name>.jar

1

Conserva il file nella stessa directory in cui lo stai estraendo. Questo ha funzionato per me.


0

Hai provato a eseguirlo con privilegi di amministratore? ovvero, eseguendo il comando in "Esegui come", quindi selezionare l'amministratore con le credenziali di amministratore appropriate

ha funzionato per me


0

Stavo provando questo:

Dopo aver dato il file letto, scrivere, eseguire i privilegi:

chmod 777 java-repl.jar

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

Impossibile accedere a bla bla ..., tuttavia questo era su Mac OS

Quindi ho provato questo:

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


0

Questo non ha funzionato "Impossibile accedere a 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"

Questo funziona

"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 differenza è il singolo spazio davanti a OneWireViewer.jar nonostante sia circondato da virgolette e abbia anche altri spazi.


0

Per me succede perché lo eseguo con la versione java predefinita (7) e non con la versione java compilata (8) utilizzata per creare questo vaso.

Quindi ho usato:

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

Invece della versione java 7:

java -jar myjar.jar

0

Se sei su WSL e stai seguendo una guida che dice, dice questo:

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

In realtà è necessario specificare il percorso completo, anche se è stato fornito nella java.library.pathparte.

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

0

Questo è un problema di autorizzazione, vedere se la directory è sotto il tuo Utente. Ecco perché funziona in un'altra cartella!


-1

prima ho creato una variabile %JAVA_HOME% :

Quando hai scaricato il file, assicurati di controllare UNBLOCK TABle proprietà del file come mostrato sopra nel post "maartencls".

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

spero che questo risolva il problema :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.