क्या "jarfile का उपयोग करने में असमर्थ" त्रुटि का कारण बनता है?


136

मैं एक आईडीई का उपयोग किए बिना अपने कार्यक्रम को निष्पादित करना चाहता हूं। मैंने एक jar फ़ाइल और एक exectuable jar फ़ाइल बनाई है। जब मैं exe जार फ़ाइल को डबल क्लिक करता हूं, तो कुछ भी नहीं होता है, और जब मैं cmd ​​में कमांड का उपयोग करने का प्रयास करता हूं तो यह मुझे यह देता है:

Error: Unable to access jarfile <path>

मैं कमांड का उपयोग करता हूं: java -jar Calculator.jar

मैंने जार कैसे बनाया:

  1. प्रोजेक्ट फ़ोल्डर (कैलकुलेटर) पर राइट क्लिक करें
  2. चुनते हैं
  3. जावा फोल्डर पर क्लिक करें और "एक्स्ट्रक्टेबल जार फाइल" चुनें, फिर अगला चुनें
  4. लॉन्च कॉन्फ़िगरेशन: मुख्य - कैलकुलेटर
  5. निर्यात गंतव्य बनाएँ
  6. मारो "खत्म" और लाभ! असल में ऐसा नहीं है।

1
जार की तरह लगता है कि किसी तरह से भ्रष्ट है, संभवतः मैनिफ़ेस्ट प्रविष्टि को याद कर रहा है।
MadProgrammer

आपको यह दिखाना चाहिए कि आपने जेएआर कैसे बनाए, उनमें क्या है और आप प्रोग्राम को चलाने की कोशिश कैसे करते हैं। जावा कोड यहाँ अप्रासंगिक है।
जोहान

क्या आपने elcipse और recompiling को पुन: लॉन्च करने का प्रयास किया है? कभी-कभी एक्लिप्स में कुछ अजीब चीजें होती हैं जिन्हें दोबारा करने से बचा जा सकता है।
मैट्स

मुझे कोड पढ़ने और सोचने में मुश्किल लगता है। और एक स्थिर मुख्य कार्य में सब कुछ होने और कंसोल को खाली करने के लिए एकल उदाहरण विधि होने का क्या मतलब है?
डेव न्यूटन

1
मेरी समस्या का मेरे पास कोई जवाब नहीं है, मैंने खुद इसका उत्तर दिया, और टिप्पणियों में मेरी प्रशंसा दिखाने का कोई तरीका नहीं है, उन्हें जवाब के माध्यम से धन्यवाद देने के अलावा। कृपया अपनी टिप्पणी पुनः भेजें।
जोसेफ स्मिथ

जवाबों:


79

मुझे इस मुद्दे का सामना करना पड़ा था जब मैंने अपनी जार फ़ाइल के रूप में चलाया था

java -jar TestJar

के बजाय

java -jar TestJar.jar

एक्सटेंशन को मिस करना .jar भी इस समस्या का कारण बनता है।


1
यह सही जवाब है। .Jar एक्सटेंशन को जार फ़ाइल नाम से जोड़ा जाना चाहिए।
अभिजय कुमार

10
यह हमेशा सही उत्तर नहीं है, मैं इसे जोड़ रहा हूं और यह काम नहीं करता है।
एलन बी

मेरे मामले में मुझे लगा कि यह एक फाइल थी जबकि यह कंसोल पर एक फ़ोल्डर था। जार फ़ाइल एक फ़ोल्डर में थी जिसका समान नाम है।
विली माकेंड

58

फिक्स्ड

मैंने इसे एक अलग फ़ोल्डर में रखा और यह काम कर गया।


62
क्या कोई समझा सकता है कि ऐसा क्यों हुआ?
अनस्तासियोस एंड्रोनिडिस

7
लगता है कि यह एक फ़ाइल अनुमति समस्या हो सकती है, हालांकि कुल अनुमान।
Aiden Fry

2
मैं एक समान मुद्दा था वाइंड पर, साइबरविन का उपयोग करके। तो cygwin का उपयोग करता है अलग अलग रास्तों खिड़कियों से /cygdrive/c/बनाम C:\ मैं का उपयोग करके यह तय realpath --relative-to=$(pwd) path/to/jarfileतो यह हमेशा एक रिश्तेदार पथ iso लागू करेंगे का उपयोग कर/cygdrive/c/.../path/to/jarfile
रिक

1
मुझे भी यही समस्या थी, अपने जार के साथ भी, मैंने गलती से जार के रास्ते को गलत कर दिया
Ori Wiesel

1
@ रीक आपकी टिप्पणी मददगार है, हालांकि यह डॉस पाथ और जावा फाइल में काम नहीं करेगा। यहाँ समाधान होगाjava -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
cy8g3n

31

[संभवतः विंडोज केवल]

मार्ग में रिक्त स्थान से सावधान रहें, तब भी जब आपका जार वर्तमान कार्यशील निर्देशिका में हो। उदाहरण के लिए, मेरे लिए यह विफल हो रहा था:

java -jar myjar.jar

मैं इसे पूरा करने में सक्षम था, जार को पूर्ण, उद्धृत पथ:

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

मुझे सही रास्ते पर स्थापित करने का श्रेय इस जवाब को जाता है ...।


इसके लिए धन्यवाद। लिनक्स में पूर्ण पथ देने की आवश्यकता है, अगर इसे एक अलग निर्देशिका से चलाने की कोशिश कर रहा है।
पबुडू

यह उत्तर आंशिक रूप से इस प्रश्न पर पहले से दिए गए उत्तर का एक डुप्लिकेट है। यह उसी विधि के साथ पहले का उत्तर है: पूर्ण उद्धृत पथ। 6 सितंबर 15 @ @ रेनेज़ द्वारा
परिष्कार

18

मेरे पास विंडोज में साइगविन के तहत यह मुद्दा था। मैं कहीं पढ़ा है कि जावा Cygwin पथ (नहीं समझती /cygdrive/c/some/dirबजाय C:\some\dir) - तो मैं एक रिश्तेदार पथ बजाय प्रयोग किया: ../../some/dir/sbt-launch.jar


मैं CygWin में यह सटीक मुद्दा रहा था! हमेशा के लिए धन्यवाद!
ऋचुक

1
ऐसे मामलों में जहां आपको साइबरविन की जरूरत होती है, साइबरगन रास्तों के बजाय विंडोज फॉर्मेट किए गए रास्तों का उपयोग करने के लिए, आप खिड़कियों के लिए पथ को परिवर्तित करने के लिए साइबरग -w / पाथ / यहां कमांड का उपयोग कर सकते हैं।
जेसन स्लोबोट्सकी

@JasonSlobotski टिप के लिए धन्यवाद, मुझे लगता है कि आपकी टिप्पणी का अपने आप में एक उत्तर होना चाहिए।
रॉबर्टो बोनावलेट

14

जार फ़ाइल लॉन्च करने का प्रयास करते समय मेरे पास एक ही मुद्दा था। पथ में एक स्थान था, इसलिए मुझे उद्धरणों को चारों ओर रखना पड़ा। के बजाय:

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

मुझे लिखना पड़ा

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

कोटेशन ने मेरे लिए चाल चली क्योंकि मेरे पास भी स्पेस इनबेटीवन था। मैंने इसे रास्ते में बिना रिक्त स्थान के और उद्धरण चिह्नों के बिना आजमाया और फिर इसने भी काम किया
टिमोथी

अन्नो 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

उपाय

पहला कदम

प्रश्न में jarfile पर राइट क्लिक करें। गुणों पर क्लिक करें। नीचे दाएं कोने में अनब्लॉक टैब पर क्लिक करें। फ़ाइल को अवरुद्ध कर दिया गया था, क्योंकि यह मेरे पीसी पर डाउनलोड और निर्मित नहीं थी।

दूसरा चरण

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

वह कमांड जो एरर मैसेज और इंजेक्शन के बिना निष्पादित की गई थी। मैं जो बनाने की कोशिश कर रहा था वह अब डायरेक्टरी में स्थित था।

उम्मीद है की यह मदद करेगा।


धन्यवाद, मेरा भी नाम apktool.jar.jar था
मयंक कुमार

8

मुझे भी ऐसी ही समस्या थी और मैंने प्रशासक के अधिकारों के साथ अपने CMD को चलाने की भी कोशिश की, लेकिन इससे समस्या हल नहीं हुई।

मूल बात यह है कि cmd में डायरेक्टरी को करंट डायरेक्टरी में बदलना सुनिश्चित करें जहाँ आपकी jar फ़ाइल है ।

निम्न चरणों का पालन करें:

डेस्कटॉप के लिए 1.Copy जार फ़ाइल।

  1. CMD चलाएं

  2. टाइप कमांड cd desktp

  3. फिर टाइप करें java -jar filename.jar

यह काम करना चाहिए।


संपादित करें : JDK-11 के बाद से ( JEP 330 : सिंगल-फाइल सोर्स-कोड प्रोग्राम लॉन्च करें)

जावा 11 के बाद से, जावा कमांड लाइन टूल एकल-फ़ाइल स्रोत-कोड को सीधे चलाने में सक्षम है। जैसे

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 फ़ाइल को / चलाने (बनाने या बनाने) की कोशिश करते हैं। आप Android stuio के शीर्ष में ड्रॉपडाउन का चयन कर सकते हैं और इसे ऐप में बदल सकते हैं । यह काम करेगा

यहाँ छवि विवरण दर्ज करें


2

मेरे लिए ऐसा होता है यदि आप PATH में है फ़ोल्डरनाम में देशी पोलिश वर्णों का उपयोग करते हैं। इसलिए शायद अनैतिक छंदों का उपयोग करना समस्या का कारण था।


2

मेरा विशेष मुद्दा इसलिए था क्योंकि मैं उन निर्देशिकाओं के साथ काम कर रहा था जिनमें प्रतीकात्मक लिंक (शॉर्टकट) शामिल थे। नतीजतन, कोशिश करने से java -jar ../../myJar.jarकाम नहीं चला क्योंकि मैं वह नहीं था जहां मुझे लगा कि मैं था।

सापेक्ष फ़ाइल पथों की अवहेलना ने इसे ठीक किया।


2

मेरे मामले में उपयोग किए जाने वाले सुझाए गए फ़ाइल नाम jarFile*.jarकमांड लाइन में था। फ़ोल्डर में फ़ाइल थी jarFile-1.2.3.jar। इसलिए मैंने फ़ाइल का नाम बदल दिया jarFile। तब मैंने jarFile.jarइसके बजाय इस्तेमाल किया jarFile*.jarऔर फिर समस्या हल हो गई


ऐसा करने के बाद, मेरी जार फ़ाइल समस्या को हल करने में असमर्थ।
विकासशील

2

यह एक विंडोज़ मशीन पर हो सकता है जब आपके पास फ़ोल्डर के नामों में स्थान होगा। समाधान "" के बीच पथ में प्रवेश करना होगा। उदाहरण के लिए:

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

2
यह सवाल का जवाब नहीं देता है, आपको अधिक जानकारी मांगने के लिए टिप्पणियों का उपयोग करना चाहिए।
AWD

2

किसी भी अनुमति के मुद्दों से बचने के लिए, इसे व्यवस्थापक के रूप में चलाने का प्रयास करें। इसने मेरे लिए Win10 पर काम किया।


मैक के बारे में क्या?
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 सी दिखा रहा है: कार्यक्रम फ़ाइलें \ java \ jre7 एक वैध JDK नहीं है, जबकि वेबलॉग सर्वर instaling?


1

मुझे ऐसी ही समस्या थी जहाँ टेक्स्टमेट या कुछ ने डबल कोट्स को यूनिकोड डबल कोट्स के साथ बदल दिया।

SELENIUM_SERVER_JARयूनिकोड डबल कोट्स से नियमित डबल कोट्स में बदलना और इससे मेरी समस्या हल हो गई।


1

इसका कारण यह है कि आप फ़ाइल को गलत पथ में देख रहे हैं। फ़ोल्डर का पथ खोजें जहाँ आपने फ़ाइल रखी है। 2. cmd में निर्देशिका cd को बदलें, सही पथ का उपयोग करें


1

मैं NetBeans का उपयोग करता हूं और एक ही मुद्दा था। जब मैं निर्माण और स्वच्छ परियोजना चला रहा था उसके बाद मेरा कार्यक्रम निष्पादन योग्य था। जावा प्रलेखन का कहना है कि बिल्ड / क्लीन कमांड मूल रूप से स्क्रैच से प्रोजेक्ट के पुनर्निर्माण और किसी भी पिछले संकलन को हटाने के लिए है। आशा है कि ये आपकी मदद करेगा। इसके अलावा, मैं प्रलेखन पढ़ा था। Oracle में NetBeans और Java लर्निंग ट्रेल्स हैं। बहुत मददगार। सौभाग्य!


1

हो सकता है कि आपने अपने जार के गलत संस्करण को निर्दिष्ट कर दिया हो।


1

मैंने आखिरकार अपनी jar फाइल को उसी JDK के रूप में एक ही फ़ोल्डर में चिपकाया, ताकि मुझे रास्ते शामिल न करने पड़ें। मुझे एक प्रशासक के रूप में कमांड प्रॉम्प्ट भी खोलना था।

  1. राइट क्लिक कमांड प्रॉम्प्ट और "व्यवस्थापक के रूप में चलाएं"
  2. उस निर्देशिका पर नेविगेट करें जहाँ आपने अपना jdk बचाया था
  3. कमांड प्रॉम्प्ट प्रकार में: java.exe -jar <jar file name>.jar

1

फ़ाइल को उसी निर्देशिका में रखें जहाँ आप उसे निकाल रहे हैं। मेरे लिए यही काम किया।


0

क्या आपने इसे व्यवस्थापक के तहत चलाने की कोशिश की है? अर्थ, "रन अस" में कमांड चलाना और फिर उचित व्यवस्थापक क्रेडेंशियल्स के साथ व्यवस्थापक का चयन करना

मेरे लिए काम किया


0

मैं यह कोशिश कर रहा था:

फाइल पढ़ने, लिखने, निजीकृत निष्पादित करने के बाद:

chmod 777 java-repl.jar

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

Bla bla को एक्सेस करने में असमर्थ ..., हालांकि यह मैक 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

मेरे लिए यह इसलिए होता है क्योंकि मैं इसे डिफ़ॉल्ट जावा संस्करण (7) के साथ चलाता हूं, न कि संकलित जावा संस्करण (8) के साथ इस जार को बनाने के लिए।

तो मैंने इस्तेमाल किया:

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

जावा 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.