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


136

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

Error: Unable to access jarfile <path>

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

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

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

1
Похоже, что Jar поврежден, возможно, отсутствует запись Manifest.
MadProgrammer

Вы должны показать, как вы создали файлы JAR, что в них и как вы пытаетесь запустить программу. Код Java здесь не имеет значения.
Йохен

Вы пробовали перезапустить elcipse и перекомпилировать? Иногда Eclipse делает некоторые странные вещи, которых можно избежать путем перезапуска.
MattS

Я нахожу код сложным для чтения и обдумывания. И какой смысл иметь все в статической главной функции и иметь метод единственного экземпляра для очистки консоли?
Дейв Ньютон,

1
У меня нет ответов на мою проблему, я ответил на нее сам, и нет никакого способа показать мою признательность в комментариях, кроме как поблагодарить их через ответ. Пожалуйста, перечитайте ваш комментарий.
Джозеф Смит

Ответы:


79

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

java -jar TestJar

вместо того

java -jar TestJar.jar

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


1
Это правильный ответ. Расширение .jar должно быть добавлено к имени файла jar.
Абхиджай Кумар

10
Это не всегда правильный ответ, я добавляю его, и он не работает.
Алан Б

В моем случае я думал, что это был файл, а это была папка на консоли. Файл jar находился в папке с таким же именем.
Вилли Макенд

58

Исправлена

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


62
Может кто-нибудь объяснить, почему это произошло?
Анастасиос Андронидис

7
Звучит так, как будто это может быть проблема с правами доступа к файлам, как бы то ни было.
Эйден Фрай

2
У меня была похожая проблема в Windows с использованием Cygwin. Таким образом, cygwin использует пути, отличные от Windows, по /cygdrive/c/сравнению с тем, как C:\ я это исправил, используя. realpath --relative-to=$(pwd) path/to/jarfileПоэтому он всегда будет применять относительный путь iso, используя/cygdrive/c/.../path/to/jarfile
Rik

1
У меня была такая же проблема, с моей банкой, я случайно набрал неверный путь к банке
Ори Визель

1
@Rik Ваш комментарий полезен, хотя он не будет работать в DOS-путях и Java-файле в Cygwin-пути. Решение здесь будетjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n

31

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

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

java -jar myjar.jar

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

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

Кредит идет на этот ответ для установки меня на правильный путь ....


Спасибо за это. Необходимо также указать полный путь в Linux, если вы пытаетесь запустить его из другого каталога.
Пубуду

Этот ответ является частично дубликатом уже данного ответа на этот вопрос. Это более ранний ответ тем же методом: полный путь в кавычках. 6 сентября '15 @benez
sophievda

18

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


У меня была именно эта проблема в CygWin! Спасибо тебе навсегда!
Rhyuk

1
В случаях, когда вам нужно, чтобы cygwin использовал пути в формате Windows вместо путей cygwin, вы можете использовать команду cygpath -w / path / here, чтобы преобразовать путь в эквивалент Windows.
Джейсон Слобоцки

@JasonSlobotski спасибо за совет, я думаю, что ваш комментарий должен быть ответом сам по себе.
Роберто Бонваллет

14

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

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

я должен был написать

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

Цитаты помогли мне, так как между ними были пробелы. Затем я попробовал это без пробелов в пути и без кавычек, а затем это сработало
Тимоти

Anno 2019: мне помогло это решение с кавычками! Без кавычек и без пробелов это не работает в моем случае.
Софиевда

11

Просто наткнулся на ту же проблему, пытаясь сделать плохой 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-й шаг

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

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, который я пытался создать, теперь находился в каталоге.

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


Спасибо, мой тоже был назван как apktool.jar.jar
Mayank Kumar

8

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

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

Выполните следующие шаги:

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

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

  2. введите команду cd desktp

  3. затем введите java -jar filename.jar

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


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

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

java filename.java


5

Если вы используете 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


3

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

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

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

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

3

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

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


2

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


2

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

Независимо от относительных путей к файлам это исправлено.


2

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


после этого я не смог получить доступ к файлу JAR.
Developine

2

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

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

2
это не отвечает на вопрос, вы должны использовать комментарии, чтобы запросить дополнительную информацию.
awd

2

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


а как насчет Mac?
GvSharma

2

Я знаю, что эта тема существует много лет назад, и проблема тоже была исправлена. Но я надеюсь, что это поможет кому-то еще в будущем, так как я столкнулся с некоторыми подобными проблемами, когда пытался установить 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?


1

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

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


1

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


1

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


1

Возможно, вы указали неправильную версию своей банки.


1

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

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


0

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

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


0

Я пытался это:

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

chmod 777 java-repl.jar

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

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

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

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


0

Это не сработало "Невозможно получить доступ к 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 стоит один пробел, несмотря на то, что он заключен в кавычки и даже содержит другие пробелы.


0

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

Так что я использовал:

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

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

java -jar myjar.jar

0

Если вы находитесь на 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

0

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


-1

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.