Что вызывает ошибку "Невозможно получить доступ к файлу jarfile"?

Я хочу выполнить свою программу без использования IDE. Я создал файл jar и исполняемый файл jar. Когда я дважды щелкаю файл exe jar, ничего не происходит, и когда я пытаюсь использовать команду в cmd, она дает мне следующее:

Error: Unable to access jarfile <path>

Использую команду: java -jar Calculator.jar

Как я создал банку:

  1. Щелкните правой кнопкой мыши папку проекта (Калькулятор)
  2. Выбирать
  3. Щелкните папку Java и выберите «Исполняемый файл Jar», затем выберите «Далее».
  4. Конфигурация запуска: Главная - Калькулятор
  5. Создать место для экспорта
  6. Нажмите «Готово» и получите прибыль! Ну не совсем.

person Joseph Smith    schedule 14.08.2012    source источник
comment
Похоже, что Jar каким-то образом поврежден, возможно, отсутствует запись в манифесте.   -  person MadProgrammer    schedule 14.08.2012
comment
Вы должны показать, как вы создавали JAR-файлы, что в них содержится и как вы пытаетесь запустить программу. Код Java здесь не имеет значения.   -  person Jochen    schedule 14.08.2012
comment
Вы пробовали перезапустить elcipse и перекомпилировать? Иногда Eclipse делает некоторые странные вещи, которых можно избежать, перезапустив.   -  person MattS    schedule 14.08.2012
comment
Мне сложно читать и думать о коде. И какой смысл иметь все в статической основной функции и иметь единственный метод экземпляра для очистки консоли?   -  person Dave Newton    schedule 14.08.2012
comment
MadProgrammer: Как я могу это исправить? Йохен: Подойдет. Сейчас отредактирую. МэттС: Да, я пробовал это несколько раз. Дэйв: Потому что я лишь поверхностно коснулся Java, и я действительно не знаю, как выглядит красивый код :)   -  person Joseph Smith    schedule 14.08.2012
comment
В командной строке вы находитесь в той же папке, что и файл jar, когда пытаетесь запустить java -jar Calculator.jar?   -  person Logan    schedule 14.08.2012
comment
Да, я поместил файл .jar на свой рабочий стол, это именно та строка - C: \ Users \ jsmit1061 \ Desktop   -  person Joseph Smith    schedule 15.08.2012
comment
У меня нет ответов на мою проблему, я ответил на нее сам, и нет никакого способа выразить свою признательность в комментариях, кроме как поблагодарить их в ответе. Пожалуйста, перечитайте свой комментарий.   -  person Joseph Smith    schedule 23.08.2012
comment
Это сообщение об ошибке отображается также при попытке запустить папку, а не файл .jar.   -  person Spacemonkey    schedule 02.07.2013
comment
Мне удалось решить эту проблему, указав абсолютный путь для файла jar после команды java -jar /home/aboslute_path_to_the_jar_file.jar. Надеюсь, это поможет.   -  person Anjani Dhrangadhariya    schedule 26.02.2020
comment
случилось со мной, когда я открыл банку в одном окне терминала, не разрешил запись в каталог, затем открыл другой терминал и попытался запустить ту же банку   -  person RobZ    schedule 15.10.2020
comment
для меня это была глупая опечатка .. я давал lambok.jar вместо lombok.jar   -  person Stunner    schedule 03.11.2020


Ответы (37)


Я столкнулся с этой проблемой, когда запускал свой Jar-файл как

java -jar TestJar

вместо того

java -jar TestJar.jar

Отсутствие расширения .jar также вызывает эту проблему.

person Vinay Kadalagi    schedule 16.09.2014
comment
Это правильный ответ. К имени файла jar необходимо добавить расширение .jar. - person Abhijay Kumar; 22.04.2019
comment
Это не всегда правильный ответ, я добавляю его, и он не работает. - person Alan B; 07.10.2019
comment
В моем случае я думал, что это файл, в то время как это была папка на консоли. Файл jar находился в папке с таким же именем. - person Willy Makend; 23.10.2019

Исправлено

Я просто поместил его в другую папку, и это сработало.

person Joseph Smith    schedule 15.08.2012
comment
Может кто-нибудь объяснить, почему это произошло? - person Anastasios Andronidis; 11.07.2014
comment
Похоже, это могла быть проблема с правами доступа к файлам, но полное предположение. - person Aiden Fry; 09.09.2014
comment
иногда такое бывает в Mac. если я копирую файл ms bat в sh и изменяю его, чтобы он работал на Mac, я получаю ту же ошибку. Лучше создать новый файл sh в Mac, чтобы избавиться от проблемы. Причина должна быть в скрытых символах в ms файле. - person serkan; 09.05.2015
comment
У меня была аналогичная проблема с WIndows, используя cygwin. Итак, cygwin использует разные пути, чем окна /cygdrive/c/ и C:\ . Я исправил это с помощью realpath --relative-to=$(pwd) path/to/jarfile, поэтому он всегда будет применять относительный путь iso с помощью /cygdrive/c/.../path/to/jarfile - person Rik; 14.06.2016
comment
У меня была такая же проблема, и с моей банкой, я случайно неправильно ввел путь к банке - person Ori Wiesel; 22.11.2017
comment
Попробуйте исходный путь к файлу jar. - person Oguzhan Cevik; 20.06.2018
comment
Это потому, что когда вы меняли местоположение, вам нужно было указать конкретный путь к jar - person Manish Patel; 31.07.2019
comment
@Rik Ваш комментарий полезен, хотя он не будет работать в путях dos и файле java в пути cygwin. Решением здесь будет java -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`) - person cy8g3n; 12.09.2019

[Возможно, только для Windows]

Остерегайтесь пробелов в пути, даже если ваша банка находится в текущем рабочем каталоге. Например, для меня это не удалось:

java -jar myjar.jar

Я смог исправить это, указав полный путь к банке в кавычках:

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

Благодарим этот ответ за то, что он указал мне правильный путь ....

person Robert Brown    schedule 15.03.2016
comment
Спасибо за это. Также необходимо указать полный путь в Linux, если вы пытаетесь запустить его из другого каталога. - person Pubudu; 29.06.2016
comment
Этот ответ частично дублирует уже данный ответ на этот вопрос. Это более ранний ответ с тем же методом: полный путь в кавычках. 6 сентября 2015 г., автор: @benez - person sophievda; 28.10.2019

У меня была эта проблема под CygWin в Windows. Я читал в другом месте, что Java не понимает пути CygWin (/cygdrive/c/some/dir вместо C:\some\dir), поэтому вместо этого я использовал относительный путь: ../../some/dir/sbt-launch.jar.

person radumanolescu    schedule 04.08.2016
comment
У меня была именно эта проблема в CygWin! Спасибо вам навсегда! - person Rhyuk; 21.04.2017
comment
В случаях, когда вам нужно, чтобы cygwin использовал пути в формате Windows вместо путей cygwin, вы можете использовать команду cygpath -w / path / here для преобразования пути в эквивалент Windows. - person Jason Slobotski; 05.05.2018
comment
@JasonSlobotski спасибо за совет, я думаю, ваш комментарий должен быть ответом сам по себе. - person Roberto Bonvallet; 08.05.2018

У меня была такая же проблема при попытке запустить файл jar. Путь содержал пробел, поэтому мне пришлось заключить его в кавычки. Вместо того:

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

мне пришлось написать

java -jar "C:\Path to File\myJar.jar"
person benez    schedule 06.09.2015
comment
Цитаты помогли мне, так как у меня также были пробелы между ними. Затем я попробовал его без пробелов в пути и без кавычек, а затем он также работал - person Timothy; 19.02.2017
comment
Anno 2019: мне помогло это решение, в кавычках! Без кавычек и без пробелов в моем случае не работает. - person sophievda; 28.10.2019

Просто столкнулся с той же проблемой, пытаясь сделать плохой USB ...

Я пытался запустить эту команду в админке cmd

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

Но получил эту ошибку:

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

Решение

1-й шаг

Щелкните правой кнопкой мыши нужный файл jar. Щелкните свойства. Щелкните вкладку разблокировки в правом нижнем углу. Файл заблокирован, потому что он был загружен, а не создан на моем компьютере.

2-й шаг

В cmd я изменил каталог, в котором находится файл jar.

cd C:\fw\ducky\

Затем я набрал dir и увидел, что файл называется duckencode.jar.jar.

Итак, в cmd я изменил исходную команду, чтобы ссылаться на файл с .jar.jar

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

Эта команда выполнялась без сообщений об ошибках, и файл inject.bin, который я пытался создать, теперь находится в каталоге.

Надеюсь это поможет.

person Leon thomas    schedule 23.10.2015
comment
Спасибо, мой тоже был назван apktool.jar.jar - person Mayank Kumar; 07.09.2018

У меня была аналогичная проблема, и я даже попытался запустить CMD с правами администратора, но это не решило проблему.

Главное - не забудьте изменить Каталог в cmd на текущий каталог, где находится ваш файл jar.

Сделайте следующие шаги:

  1. Скопируйте файл jar на рабочий стол.

  2. Запустите CMD

  3. Введите команду cd desktop

  4. Затем введите java -jar filename.jar

Это должно сработать.


Изменить: начиная с JDK-11 и далее (JEP 330: запуск сингла -Программы с исходным кодом файла)

Начиная с Java 11, инструмент командной строки java может напрямую запускать однофайловый исходный код. например

java filename.java
person Vishwa Ratna    schedule 26.12.2018

Если вы используете OSX, загруженные файлы помечаются флажком безопасности, который предотвращает запуск неподписанных приложений.

чтобы проверить это, вы можете просмотреть расширенные атрибуты в файле

$ 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

Затем вы можете очистить атрибуты с помощью

xattr -c file.jar
person nick fox    schedule 13.10.2017
comment
см. также stackoverflow.com/questions/4833052/ и superuser.com/questions/526920/ - person nick fox; 13.10.2017

Это сработало для меня.

cd /path/to/the/jar/

java -jar ./Calculator.jar
person Bastian Cáceres Pino    schedule 15.11.2016

Это также может произойти, если вы неправильно предоставите свой список параметров. Вот что я делал:

java -jar [email protected] testing_subject file.txt test_send_emails.jar

Вместо правильной версии:

java -jar test_send_emails.jar [email protected] testing_subject file.txt
person Buffalo    schedule 15.07.2015

иногда это происходит, когда вы пытаетесь (запустить или создать) файл .jar в папке / libs, щелкнув его правой кнопкой мыши в студии Android. вы можете выбрать раскрывающийся список в верхней части Android stuio и изменить его на приложение. Это будет работать

введите здесь описание изображения

person anand krish    schedule 17.02.2016

Ни один из предоставленных ответов не помог мне на macOS 11 Big Sur. Проблема оказалась в том, что программам требуется специальное разрешение для доступа к папкам «Рабочий стол», «Документы» и «Загрузки», а Java нарушает как исключение для файлов, открываемых напрямую, так и всплывающее окно запроса разрешения.

Исправления:

  • Переместите .jar в папку, в которой нет (и не находится внутри) документов, рабочего стола или загрузок.
  • Вручную предоставьте разрешение. Перейдите в Системные настройки → Безопасность и конфиденциальность → Конфиденциальность → Файлы и папки → java и проверьте соответствующие папки.
person twhb    schedule 27.01.2021

Для меня это происходит, если вы используете родные польские символы в имени папки, которое находится в PATH. Так что, возможно, причиной проблемы было использование нетипичных символов.

person Huxwell    schedule 08.10.2015

Моя конкретная проблема была вызвана тем, что я работал с каталогами, содержащими символические ссылки (ярлыки). Следовательно, попытка java -jar ../../myJar.jar не сработала, потому что я был не там, где я думал.

Пренебрежение относительными путями к файлам исправлено.

person MattSayar    schedule 18.11.2015

В моем случае предложенное имя файла для использования было jarFile*.jar в командной строке. Файл в папке был jarFile-1.2.3.jar. Поэтому я переименовал файл в jarFile. Затем я использовал jarFile.jar вместо jarFile*.jar, и проблема была решена

person suku    schedule 22.01.2017
comment
после этого моя проблема с доступом к файлу jar решена. - person Developine; 20.03.2017

Это может произойти на компьютере с Windows, если в именах папок есть пробелы. Решением было бы ввести путь между "". Например:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"
person assaf    schedule 31.10.2017
comment
это не отвечает на вопрос, вы должны использовать комментарии, чтобы запросить дополнительную информацию. - person awd; 31.10.2017

Чтобы избежать проблем с разрешениями, попробуйте запустить его от имени администратора. У меня это сработало на Win10.

person Gico    schedule 14.03.2018
comment
как насчет Mac? - person GvSharma; 01.08.2019

Я знаю, что эта ветка появилась много лет назад, и проблема тоже была исправлена. Но я надеюсь, что это поможет кому-то еще в будущем, поскольку я столкнулся с некоторыми подобными проблемами, когда пытался установить Oracle WebLogic 12c и Oracle OFR, в которых его установщик находится в формате .jar. В моем случае это было либо не заключать каталог JDK в кавычки, либо просто опечатку.

Запустите Command Prompt от имени администратора и выполните команду в этом формате. Дважды проверьте предложение, если есть опечатка.

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

Если отображается что-то вроде JRE 1.xxx is not a valid JDK Java Home, убедитесь, что системные переменные для JAVA_HOME в переменных среды указывают на правильный каталог JDK. Рекомендуется JDK 1.8 или выше (2018).

Здесь вы можете найти полезную ветку: Почему он показывает, что ваш JDK c: program files \ java \ jre7 не является допустимым JDK при установке сервера weblogic?

person not_Prince    schedule 23.10.2018

У меня была аналогичная проблема, когда TextMate или что-то в этом роде заменили двойные кавычки на двойные кавычки Unicode.

Изменение моего SELENIUM_SERVER_JAR с двойных кавычек Unicode на обычные двойные кавычки, и это решило мою проблему.

person TankorSmash    schedule 30.03.2016

это потому, что вы ищете файл по неправильному пути 1. найдите путь к папке, в которую вы поместили файл 2. измените каталог cd в cmd, используйте правильный путь

person felipe    schedule 19.06.2016

Я использую NetBeans, и у меня была такая же проблема. После запуска проекта сборки и очистки моя программа стала исполняемой. В документации Java говорится, что команда build / clean предназначена для восстановления проекта с нуля и удаления всех прошлых компиляций. Надеюсь, это поможет. Кроме того, я читал документацию. У Oracle есть учебные маршруты по NetBeans и Java. Очень полезно. Удачи!

person user8315373    schedule 16.07.2017

Возможно, вы указали не ту версию своей фляги.

person cosbor11    schedule 21.09.2017

Наконец, я вставил свой jar-файл в ту же папку, что и мой JDK, поэтому мне не пришлось указывать пути. Мне также пришлось открыть командную строку как администратор.

  1. Щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».
  2. Перейдите в каталог, в котором вы сохранили свой jdk.
  3. В командной строке введите: java.exe -jar <jar file name>.jar
person Michaela Burns    schedule 14.01.2020

Храните файл в том же каталоге, в который вы его распаковываете. Это сработало для меня.

person Aishwary joshi    schedule 22.01.2020

Для меня это произошло, потому что я запускаю его с версией java по умолчанию (7), а не со скомпилированной версией java (8), используемой для создания этой банки.

Итак, я использовал:

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

Вместо версии java 7:

java -jar myjar.jar
person Adir D    schedule 09.02.2020

Вы пробовали запускать его с правами администратора? Это означает, что запустите команду в «Запуск от имени», а затем выберите администратора с соответствующими учетными данными.

работал на меня

person Nick_Stubborn_Mex.    schedule 14.05.2019

Я пробовал это:

После предоставления файла на чтение, запись, выполнение привилегий:

chmod 777 java-repl.jar

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

Невозможно получить доступ к bla bla ..., хотя это было на Mac OS

Итак, я попробовал это:

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

person Kinglee    schedule 23.07.2019

Это не сработало "Невозможно получить доступ к файлу 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"

Это действительно работает

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

Разница в том, что перед OneWireViewer.jar есть один пробел, несмотря на то, что он заключен в кавычки и даже имеет другие пробелы.

person angar    schedule 13.10.2019

Если вы используете WSL и следуете руководству, в котором говорится:

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

На самом деле вам нужно указать полный путь, даже если вы указали его в части java.library.path.

java -Djava.library.path=/mnt/c/dynamodb_local/DynamoDBLocal_lib -jar /mnt/c/dynamodb_local/DynamoDBLocal.jar -sharedDb
person Pureferret    schedule 21.04.2020

Это проблема с разрешением, посмотрите, находится ли каталог под вашим пользователем. Вот почему работает в другой папке!

person Dimitrios    schedule 31.07.2020

Переименуйте файл jar и попробуйте

Объяснение: да, я знаю, что есть много ответов, но я хочу добавить сюда один момент, с которым я столкнулся.

Я построил банку и переместил ее на сервер, где я развертываю (это нормальный процесс), здесь имя файла, которое я переместил, уже существует на сервере, здесь файл, очевидно, переопределит. В этом случае я столкнулся с этой проблемой. возможно, во время переопределения может возникнуть проблема с копированием разрешений.

Надеюсь, это кому-то поможет.

person Sainath Pabba    schedule 03.08.2020

Для меня проблема была решена после доступа к папке, в которой ранее была помещена банка, я давал команду на диске D :, но когда я перешел в папку, в которую была помещена эта банка, эта проблема была решена.

person nikhil udgirkar    schedule 18.08.2020

сначала я создал переменную %JAVA_HOME% :

Когда вы загрузили файл, не забудьте проверить UNBLOCK TAB в свойствах файла, как показано выше в сообщении "maartencls".

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

надеюсь, это решит проблему :)

person mouf low    schedule 03.08.2019

Первый запуск: java -version

а затем запустите: java -jar Calculator.jar

Это сработало для меня.

person Sruthy    schedule 26.05.2020
comment
Не знаете, зачем здесь нужен java -version? Кроме того, запуск java -jar Calculator.jar - это то, что OP делал и не работал .... - person ArielGro; 26.05.2020

Вы можете указать полный путь к вашему файлу java.exe, например: c: \ Program Files \ Java \ jdk-9.0.4 \ bin \ java.exe -jar path_to_your_jar_file.jar мне это поможет. Или проверьте, какой файл java.exe запускается по умолчанию в вашей системе (особенно, если у вас много версий JDK / JRE).

person Ihar Pak    schedule 18.09.2020

Щелкните правой кнопкой мыши родительскую папку файла ›свойства› снимите флажок Только для чтения

person Kid    schedule 10.11.2020
comment
У меня не сработало - person Prabhat Mishra; 04.01.2021
comment
Эта проблема может возникать по разным причинам, у меня это сработало, потому что права доступа к файлу были немного отключены, спасибо за отрицательный ответ. - person Kid; 24.03.2021

В моей проблеме для доступа к каталогу из командной строки (в Windows) эта ошибка

"невозможно получить доступ ..."

потому что неправильное расширение файла

file.jar.jar

! , поэтому измените его на правильный

file.jar

:) удачи

person Sayid Bro    schedule 01.01.2017