¿Qué causa el error "No se puede acceder al archivo jar"?


136

Quiero ejecutar mi programa sin usar un IDE. He creado un archivo jar y un archivo jar ejecutable. Cuando hago doble clic en el archivo exe jar, no pasa nada, y cuando trato de usar el comando en cmd me da esto:

Error: Unable to access jarfile <path>

Yo uso el comando: java -jar Calculator.jar

Cómo creé el frasco:

  1. Haga clic derecho en la carpeta del proyecto (Calculadora)
  2. Seleccione
  3. Haga clic en la carpeta Java y seleccione "Archivo Jar ejecutable", luego seleccione siguiente
  4. Configuración de inicio: Principal - Calculadora
  5. Crear destino de exportación
  6. ¡Presiona "Finalizar" y aprovecha! Bueno en realidad no.

1
Parece que el Jar está corrupto de alguna manera, posiblemente falta la entrada del Manifiesto.
MadProgrammer

Debería mostrar cómo creó los JAR, qué hay en ellos y cómo intenta ejecutar el programa. El código Java es irrelevante aquí.
Jochen

¿Has intentado relanzar elcipse y recompilar? A veces Eclipse hace algunas cosas extrañas que se pueden evitar relanzando.
MattS

El código me resulta difícil de leer y pensar. ¿Y qué sentido tiene tener todo en una función principal estática y tener un método de instancia única para borrar la consola?
Dave Newton el

1
No tengo respuestas a mi problema, lo respondí yo mismo, y no hay forma de mostrar mi agradecimiento en los comentarios, aparte de agradecerles por respuesta. Por favor, vuelva a leer su comentario.
Joseph Smith el

Respuestas:


78

Me encontré con este problema cuando ejecuté mi archivo Jar como

java -jar TestJar

en vez de

java -jar TestJar.jar

Falta la extensión .jar también causa este problema.


1
Esta es la respuesta correcta. La extensión .jar debe agregarse al nombre del archivo jar.
Abhijay Kumar

10
No siempre es la respuesta correcta, la agrego y no funciona.
Alan B

En mi caso, pensé que era un archivo mientras era una carpeta en la consola. El archivo jar estaba en una carpeta que tiene el mismo nombre.
Willy Makend

58

Fijo

Lo acabo de colocar en una carpeta diferente y funcionó.


62
¿Alguien puede explicar por qué sucedió esto?
Anastasios Andronidis

77
Parece que podría haber sido un problema de permisos de archivos, sin embargo, es una suposición total.
Aiden Fry

2
Tuve un problema similar en Windows, usando cygwin. Entonces, Cygwin usa rutas diferentes a las de Windows /cygdrive/c/y C:\ yo arreglé esto usando realpath --relative-to=$(pwd) path/to/jarfileAsí que siempre impondrá una iso de ruta relativa usando/cygdrive/c/.../path/to/jarfile
Rik

1
Tuve el mismo problema, con mi jarra también, accidentalmente escribí mal el camino de la jarra
Ori Wiesel

1
@Rik Su comentario es útil, aunque no funcionará en las rutas dos y el archivo java en la ruta cygwin. La solución aquí serájava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n el

31

[Posiblemente solo Windows]

Tenga cuidado con los espacios en la ruta, incluso cuando su jar está en el directorio de trabajo actual. Por ejemplo, para mí esto estaba fallando:

java -jar myjar.jar

Pude arreglar esto dando la ruta completa y citada al frasco:

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

El crédito va a esta respuesta por ponerme en el camino correcto ...


Gracias por esto. También necesita dar la ruta completa en Linux, si intenta ejecutarla desde un directorio diferente.
Pubudu

Esta respuesta es en parte un duplicado de una respuesta ya dada sobre esta pregunta. Esta es la respuesta anterior con el mismo método: ruta completa entre comillas. 6 de septiembre de 2015 por @benez
sophievda

18

Tuve este problema en CygWin en Windows. He leído en otro lugar que Java no entiende los caminos CygWin ( /cygdrive/c/some/diren lugar de C:\some\dir) - por lo que utiliza una ruta relativa en su lugar: ../../some/dir/sbt-launch.jar.


¡Estaba teniendo este problema exacto en CygWin! Gracias por siempre!
Rhyuk

1
En los casos en que necesite que cygwin use rutas formateadas de Windows en lugar de rutas cygwin, puede usar el comando cygpath -w / path / here para convertir la ruta al equivalente de Windows.
Jason Slobotski

@JasonSlobotski gracias por el consejo, creo que tu comentario debería ser una respuesta por sí solo.
Roberto Bonvallet

14

Tuve el mismo problema al intentar iniciar el archivo jar. El camino contenía un espacio, así que tuve que poner citas alrededor. En vez de:

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

tuve que escribir

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

Las citas hicieron el truco para mí ya que también tenía espacios intermedios. Luego lo probé sin espacios en el camino y sin comillas y luego funcionó también
Timothy

Anno 2019: ¡Esta solución me ayudó, con comillas! Sin comillas y sin espacios no funciona en mi caso.
sophievda

11

Acabo de encontrar el mismo problema al intentar hacer un mal USB ...

Traté de ejecutar este comando en admin cmd

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

Pero tengo este error:

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

Solución

1er paso

Haga clic derecho en el archivo jar en cuestión. Haga clic en propiedades. Haga clic en la pestaña de desbloqueo en la esquina inferior derecha. El archivo fue bloqueado porque se descargó y no se creó en mi PC.

2do paso

En el cmd cambié el directorio a donde se encuentra el archivo jar.

cd C:\fw\ducky\

Luego escribí diry vi que el archivo se llamabaduckencode.jar.jar

Entonces, en cmd, cambié el comando original para hacer referencia al archivo con .jar.jar

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

Ese comando ejecutado sin mensajes de error y el inject.bin que estaba tratando de crear ahora estaba ubicado en el directorio.

Espero que esto ayude.


Gracias, el mío también fue nombrado como apktool.jar.jar
Kumar el

8

Tuve un problema similar e incluso intenté ejecutar mi CMD con derechos de administrador, pero no resolvió el problema.

Lo básico es asegurarse de cambiar el directorio en cmd al directorio actual donde está su archivo jar.

Haz los siguientes pasos:

1. Copie el archivo jar al escritorio.

  1. Ejecute CMD

  2. comando de tipo cd desktp

  3. luego escribe java -jar filename.jar

Esto debería funcionar.


Editar : desde JDK-11 en adelante ( JEP 330 : iniciar programas de código fuente de un solo archivo)

Desde Java 11, la herramienta de línea de comandos de Java ha podido ejecutar un código fuente de un solo archivo directamente. p.ej

java filename.java


5

Si está utilizando OSX, los archivos descargados se etiquetan con un indicador de seguridad que evita que se ejecuten aplicaciones sin firmar.

para verificar esto, puede ver los atributos extendidos en el archivo

$ 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

Luego puede borrar los atributos con

xattr -c file.jar


3

También puede suceder si no proporciona correctamente su lista de parámetros. Esto es lo que estaba haciendo:

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

En lugar de la versión correcta:

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

3

a veces sucede cuando intenta (ejecutar o crear) un archivo .jar en la carpeta / libs haciendo clic derecho en Android Studio. Puede seleccionar el menú desplegable en la parte superior de Android Stuio y cambiarlo a la aplicación . Esto funcionará

ingrese la descripción de la imagen aquí


2

Para mí, sucede si usas caracteres nativos polacos en el nombre de carpeta que está en la RUTA. Entonces, tal vez el uso de caracteres atípicos fue la razón del problema.


2

Mi problema particular fue causado porque estaba trabajando con directorios que involucraban enlaces simbólicos (atajos). En consecuencia, intentarlo java -jar ../../myJar.jarno funcionó porque no estaba donde pensaba que estaba.

Sin tener en cuenta las rutas de archivo relativas, lo arregló de inmediato.


2

En mi caso, el nombre de archivo sugerido para usar estaba jarFile*.jaren la línea de comando. El archivo en la carpeta era jarFile-1.2.3.jar. Entonces cambié el nombre del archivo a jarFile. Luego usé en jarFile.jarlugar de jarFile*.jary luego el problema se resolvió


después de hacer esto, se resolvió mi problema de incapaz de acceder al archivo jar.
Developine

2

Puede suceder en una máquina con Windows cuando tiene espacios en los nombres de la carpeta. La solución sería entrar en el camino entre "". Por ejemplo:

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

2
esto no responde a la pregunta, debe usar los comentarios para solicitar más información.
awd

2

Para evitar problemas de permisos, intente ejecutarlo como administrador. Esto funcionó para mí en Win10.


¿Qué hay de Mac?
GvSharma

2

Sé que este hilo es hace años y el problema también se solucionó. Pero espero que esto ayude a alguien más en el futuro, ya que he encontrado algunos problemas similares mientras trataba de instalar Oracle WebLogic 12c y Oracle OFR en el que su instalador está en .jarformato. Para el caso mío, no se incluyó el directorio JDK entre comillas o simplemente un error tipográfico.

Ejecutar Command Promptcomo administrador y ejecutar el comando en este formato. Verifique la oración si hay un error tipográfico.

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

Si muestra algo así JRE 1.xxx is not a valid JDK Java Home, asegúrese de que las variables del sistema JAVA_HOMEen Variables de entorno apuntan al directorio JDK correcto. Se recomienda JDK 1.8 o superior (2018).

Un hilo útil aquí, puede referirlo: ¿Por qué muestra su JDK c: archivos de programa \ java \ jre7 no es un JDK válido al instalar el servidor weblogic?


1

Tuve un problema similar donde TextMate o algo reemplazó las comillas dobles con las comillas dobles Unicode.

Cambiar mi SELENIUM_SERVER_JARde las comillas dobles Unicode a comillas dobles regulares y eso resolvió mi problema.


1

esto se debe a que está buscando el archivo en la ruta incorrecta 1. busque la ruta de la carpeta donde colocó el archivo 2. cambie el directorio cd en cmd use la ruta correcta


1

Yo uso NetBeans y tuve el mismo problema. Después de ejecutar el proyecto de compilación y limpieza, mi programa fue ejecutable. La documentación de Java dice que el comando build / clean es para reconstruir el proyecto desde cero básicamente y eliminar cualquier compilación anterior. Espero que esto ayude. Además, leí la documentación. Oracle tiene rutas de aprendizaje de NetBeans y Java. Muy útil. ¡Buena suerte!


1

Tal vez ha especificado la versión incorrecta de su jar.


1

Finalmente pegué mi archivo jar en la misma carpeta que mi JDK, así que no tuve que incluir las rutas. También tuve que abrir el símbolo del sistema como administrador.

  1. Haga clic derecho en Símbolo del sistema y "Ejecutar como administrador"
  2. Navegue al directorio donde guardó su jdk en
  3. En el símbolo del sistema, escriba: java.exe -jar <jar file name>.jar

1

Mantenga el archivo en el mismo directorio donde lo extrae. Eso funcionó para mí.


0

¿Has intentado ejecutarlo bajo privilegios de administrador? es decir, ejecutar el comando en "Ejecutar como" y luego seleccionar administrador con las credenciales de administrador adecuadas

trabajó para mi


0

Estaba intentando esto:

Después de leer, escribir y ejecutar el archivo privilegios:

chmod 777 java-repl.jar

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

No se puede acceder a bla bla ..., aunque esto estaba en Mac OS

Entonces intenté esto:

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


0

Esto no funcionó "No se puede acceder al archivo 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"

Esto 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"

La diferencia es el espacio único frente a OneWireViewer.jar a pesar de que está rodeado de comillas e incluso tiene otros espacios.


0

Para mí sucede porque lo ejecuto con la versión predeterminada de Java (7) y no con la versión compilada de Java (8) utilizada para crear este jar.

Entonces usé:

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

En lugar de la versión de Java 7:

java -jar myjar.jar

0

Si está en WSL y sigue una guía que dice, dice esto:

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

En realidad, debe especificar la ruta completa, aunque la haya proporcionado en la java.library.pathparte.

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

0

Este es un problema de permiso, vea si el directorio está bajo su Usuario. ¡Por eso está trabajando en otra carpeta!


-1

primero creé una variable %JAVA_HOME% :

Cuando descargó el archivo, asegúrese de verificar las UNBLOCK TABpropiedades del archivo como se muestra arriba en la publicación "maartencls".

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

Espero que esto resuelva el problema :)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.