Що викликає помилку "Неможливо отримати доступ до jarfile"?


136

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

Error: Unable to access jarfile <path>

Я використовую команду: java -jar Calculator.jar

Як я створив банку:

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

1
Звучить, що Jar якимось чином зіпсований, можливо, відсутній запис Маніфесту.
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/vs C:\ я виправив це, використовуючи realpath --relative-to=$(pwd) path/to/jarfileТак, він завжди буде застосовувати відносний iso iso шляхом використання/cygdrive/c/.../path/to/jarfile
Rik

1
У мене була така ж проблема, і з моєю баночкою теж я випадково неправильно вказав шлях баночки
Ori Wiesel

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

31

[Можливо, лише для Windows]

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

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! Дякую вам назавжди!
Рюк

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: Це рішення допомогло мені, лапками! Без лапок і без пробілів у моєму випадку це не працює.
sophievda

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-й крок

Клацніть правою кнопкою миші потрібний jarfile. Клацніть властивості. Клацніть на вкладці розблокувати у правому нижньому куті. Файл був заблокований, оскільки він завантажений і не створений на моєму ПК.

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.Копіюйте файл jar на робочий стіл.

  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. ви можете вибрати спадне меню у верхній частині Android android stuio та змінити його на додаток . Це спрацює

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


2

Для мене це трапляється, якщо ви використовуєте рідні польські символи в папці, яка знаходиться в 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: програмні файли \ java \ jre7 не є дійсним JDK під час установки веб-сервера?


1

У мене була подібна проблема, коли TextMate або щось замінило подвійні лапки на подвійні лапки Unicode.

Зміна моїх SELENIUM_SERVER_JARподвійних лапок Unicode на звичайні подвійні лапки, і це вирішило мою проблему.


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"

Неможливо отримати доступ до bla bla ..., але це було в 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), що використовується для створення цієї баночки.

Тому я використав:

%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.