Che cosa causa l'errore" Impossibile accedere a jarfile"?
Voglio eseguire il mio programma senza usare un IDE. Ho creato un file jar e un file jar eseguibile. Quando Faccio doppio clic sul file jar exe, non succede nulla e quando provo a usare il comando in cmd mi dà questo:
Error: Unable to access jarfile <path>
Io uso il comando: java -jar Calculator.jar
Come ho creato il barattolo:
- Fare clic destro sulla cartella del progetto (Calcolatrice)
- Seleziona
- Fare clic sulla cartella Java e selezionare "File Jar eseguibile" , quindi selezionare successivo
- Configurazione di avvio: Main-Calculator
- Crea destinazione di esportazione
- Hit "Fine" e profitto! Beh, non proprio.
30 answers
Avevo riscontrato questo problema quando avevo eseguito il mio file Jar come
java -jar TestJar
Invece di
java -jar TestJar.jar
Manca l'estensione .anche jar causa questo problema.
Fisso
L'ho appena inserito in una cartella diversa e ha funzionato.
[Forse solo Windows]
Fai attenzione agli spazi nel percorso, anche quando il tuo jar si trova nella directory di lavoro corrente. Ad esempio, per me questo stava fallendo:
java -jar myjar.jar
Sono stato in grado di risolvere questo problema dando il percorso completo e citato al barattolo:
java -jar "%~dp0\myjar.jar"
Il merito va a questa risposta per avermi messo sulla strada giusta....
Ho avuto questo problema sotto CygWin in Windows. Ho letto altrove che Java non capisce i percorsi CygWin (/cygdrive/c/some/dir
invece di C:\some\dir
) - quindi ho usato invece un percorso relativo: ../../some/dir/sbt-launch.jar
.
Ho avuto lo stesso problema durante il tentativo di avviare il file jar. Il percorso conteneva uno spazio, quindi ho dovuto posizionare le virgolette. Invece di:
java -jar C:\Path to File\myJar.jar
Ho dovuto scrivere
java -jar "C:\Path to File\myJar.jar"
Appena incontrato lo stesso problema cercando di fare una cattiva USB...
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 ottenuto questo errore:
Error: unable to access jarfile c:\fw\ducky\duckencode.jar
Soluzione
1a fase
Fare clic con il pulsante destro del mouse sul file in questione. Fare clic su Proprietà. Fare 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 dove si trova il file jar.
cd C:\fw\ducky\
Poi ho digitato dir
e ho visto che il file si chiamava duckencode.jar.jar
Quindi in cmd ho cambiato il comando originale per fare riferimento al file con .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 l'inject.bin che stavo cercando di creare ora si trovava nella directory.
Spero che questo aiuti.
Ho avuto un problema simile e ho persino provato a eseguire il mio CMD con i diritti di amministratore, ma non ha risolto il problema.
La cosa fondamentale è assicurarsi di cambiare la directory in cmd nella directory corrente dove si trova il file jar.
Procedere come segue:
-
Copia il file jar sul desktop.
-
Eseguire CMD
-
Digitare il comando
cd desktop
-
Quindi digitare
java -jar filename.jar
Questo dovrebbe funzionare.
Modifica : da JDK-11 in poi ( JEP 330: avvia programmi con codice sorgente a file singolo)
Da Java 11, java strumento a riga di comando è stato in grado di eseguire un singolo file di codice sorgente direttamente. ad esempio
java filename.java
Se si utilizza OSX, i file scaricati vengono contrassegnati con un flag di sicurezza che impedisce l'esecuzione di applicazioni non firmate.
Per verificare questo è 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
Questo ha funzionato per me.
cd /path/to/the/jar/
java -jar ./Calculator.jar
Può accadere anche se non fornisci correttamente la tua lista di parametri. Ecco cosa stavo facendo:
java -jar [email protected] testing_subject file.txt test_send_emails.jar
Invece della versione corretta:
java -jar test_send_emails.jar [email protected] testing_subject file.txt
A volte succede quando si tenta di (eseguire o creare) un .file jar nella cartella / libs facendo clic destro su di esso in Android studio. è possibile selezionare il menu a discesa nella parte superiore di Android stuio e cambiarlo in app . Questo funzionerà
Per me succede se usi caratteri polacchi nativi in foldername che si trova nel PERCORSO. Quindi forse usare caratteri atipici era la ragione del problema.
Il mio particolare problema è stato causato perché stavo lavorando con directory che coinvolgevano collegamenti simbolici (scorciatoie). Di conseguenza, provare java -jar ../../myJar.jar
non ha funzionato perché non ero dove pensavo di essere.
Ignorando i percorsi dei file relativi, è stato corretto.
Nel mio caso il nome del file suggerito da utilizzare era jarFile*.jar
nella riga di comando. Il file nella cartella era jarFile-1.2.3.jar
. Così ho rinominato il file in jarFile
. Quindi ho usato jarFile.jar
invece di jarFile*.jar
e quindi il problema è stato risolto
Può accadere su una macchina Windows quando si hanno spazi nei nomi della cartella. La soluzione sarebbe quella di entrare nel percorso tra "". Ad esempio:
java -jar c:\my folder\x.jar -->
java -jar "c:\my folder\x.jar"
Per evitare problemi di autorizzazione, provare a eseguirlo come amministratore. Questo ha funzionato per me su Win10.
So che questo thread è 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 ho provato a installare Oracle WebLogic 12c e Oracle OFR in cui il suo programma di installazione è in formato .jar
. Per il mio caso, non è stato racchiuso la directory JDK tra virgolette o semplicemente errore di battitura.
Eseguire Command Prompt
come amministratore ed eseguire 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 come JRE 1.xxx is not a valid JDK Java Home
, assicurati che le variabili di sistema per JAVA_HOME
nelle variabili di ambiente puntino alla directory JDK corretta. JDK 1.8 o superiore è raccomandato (2018).
Un thread utile qui, puoi riferirlo: Perché mostra il tuo JDK c:program files\java\jre7 non è un JDK valido durante l'installazione di weblogic server?
Ho avuto un problema simile in cui TextMate o qualcosa ha sostituito le virgolette doppie con le virgolette unicode.
Cambiando il mio SELENIUM_SERVER_JAR
dai doppi apici unicode ai doppi apici regolari e questo ha risolto il mio problema.
Questo perché stai cercando il file nel percorso sbagliato 1. cerca il percorso della cartella in cui hai posizionato il file 2. cambia la directory cd in cmd usa il percorso giusto
Io uso NetBeans e ho avuto lo stesso problema. Dopo aver eseguito build e clean project, il mio programma era eseguibile. La documentazione Java dice che il comando build/clean serve per ricostruire il progetto da zero e rimuovere qualsiasi compilazione passata. Spero che questo aiuti. Inoltre, avevo letto la documentazione. Oracle ha percorsi di apprendimento NetBeans e Java. Molto utile. In bocca al lupo!
Forse hai specificato la versione sbagliata del tuo jar.
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.
- Fare clic destro Prompt dei comandi e "Esegui come amministratore"
- Accedere alla directory in cui è stato salvato il jdk in
- Nel prompt dei comandi digitare:
java.exe -jar <jar file name>.jar
Mantieni il file nella stessa directory in cui lo stai estraendo. Ha funzionato per me.
Per me succede perché lo eseguo con la versione java predefinita (7) e non con la versione java compilata (8) utilizzata per creare questo jar.
Così ho usato:
%Java8_64%\bin\java -jar myjar.jar
Invece di java 7 versione:
java -jar myjar.jar
Hai provato a eseguirlo sotto administrator privoleges? significato, eseguendo il comando in "Esegui come" e quindi selezionare amministratore con credenziali di amministratore appropriate
Ha funzionato per me
Stavo provando questo:
Dopo aver dato al file i privilegi di lettura, scrittura, esecuzione:
chmod 777 java-repl.jar
alias jr="java -jar $HOME/Dev/java-repl/java-repl.jar"
Impossibile accedere a bla bla..., questo era su Mac OS anche se
Quindi ho provato questo:
alias jr="cd $HOME/Dev/java-repl/ && java -jar java-repl.jar"
Questo non ha funzionato "Impossibile accedere al file 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 non resiste al fatto che sia circondato da virgolette e abbia persino altri spazi.
Se sei su WSL, e 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 parte java.library.path
.
java -Djava.library.path=/mnt/c/dynamodb_local/DynamoDBLocal_lib -jar /mnt/c/dynamodb_local/DynamoDBLocal.jar -sharedDb
Questo è un problema di autorizzazione, controlla se la directory è sotto il tuo utente. Ecco perché sta lavorando in un'altra cartella!
Rinominare il file jar e provare
Spiegazione : sì, so che ci sono molte risposte ancora voglio aggiungere un punto qui che ho affrontato.
Ho costruito il jar e l'ho spostato nel server in cui distribuisco (questo è il processo normale) qui il nome del file che ho spostato esisteva già nel server, qui il file sovrascriverà ovviamente a destra. In questo caso, ho affrontato questo problema. forse al momento dell'override può esserci un problema di copia del permesso.
Spero che questo ti aiuti qualcuno.