यह मुख्य श्रेणी की प्रकट विशेषता को JAR फ़ाइल से लोड करने में विफल क्यों रहा है?


85

मैंने इस तरह से एक JAR फाइल बनाई है jar cf jar-file input-files। अब, मैं इसे चलाने की कोशिश कर रहा हूं। इसे चलाने से काम नहीं चलता (jre कमांड नहीं मिली):

jre -cp app.jar MainClass

यह भी काम नहीं करता है:

java -jar main.jar

(Main.jar से मुख्य-वर्ग की प्रकट विशेषता लोड करने में विफल)।

मुझे यह भी पता चला

JAR फ़ाइल के रूप में पैक किए गए एप्लिकेशन को चलाने के लिए (संस्करण 1.2 - मुख्य वर्ग के प्रकट हेडर की आवश्यकता है)

"मेन-क्लास मेनिफ़ेस्ट हेडर" क्या है? मैं इसे कैसे बनाऊँ और इसे कहाँ रखूँ?

जवाबों:


62

मुझे यकीन नहीं है कि मुझे आपके लक्षणों पर विश्वास है:

  • यदि jreकमांड नहीं मिली है, तो रनिंग jre -cp app.jarको वही त्रुटि देनी चाहिए
  • बस क्लासपाथ में एक JAR फ़ाइल जोड़ने से आपको जो त्रुटि दिखाई दे रही है, उसे नहीं देना चाहिए

यदि आप चलते हैं तो मैं आपसे यह त्रुटि देखने की अपेक्षा करूंगा:

java -jar app.jar

मेन-क्लास हेडर को जार फ़ाइल के लिए प्रकट होना चाहिए - यह अन्य आवश्यक पुस्तकालयों जैसी चीजों के बारे में मेटाडेटा है। एक उपयुक्त प्रकटन बनाने के लिए सूर्य प्रलेखन देखें । मूल रूप से आपको एक पाठ फ़ाइल बनाने की आवश्यकता है जिसमें इस तरह की एक पंक्ति शामिल है:

Main-Class: MainClass

फिर भागो

jar cfm app.jar manifest.txt *.class

धन्यवाद। यह काम करता हैं। मैंने Main-Class: MainClassतब के साथ एक मैनिफ़ेस्ट फ़ाइल बनाई और फिर .jar फ़ाइल आपके द्वारा दी गई कमांड के साथ बनाई। उसके बाद मैं अपने कार्यक्रम को चला पा रहा था java -jar main.jar
रोमन

1
एक अन्य विकल्प -e विकल्प का उपयोग कर रहा है, एक अलग फ़ाइल की आवश्यकता के बिना। jar cfe app.jar MainClass *.classनोट:
-हम

35
  1. वर्गपथ और संकलन सेट करें

    javac -classpath "C: \ Program Files \ Java \ jdk1.6.0_ updateVersion \ tools.jar" yourApp.java

  2. बनाने के लिए

    मेन-क्लास: yourApp newline

  3. yourApp.jar बनाएँ

    jar cvf0m yourApp.jar surf.txt yourApp.class

  4. yourApp.jar चलाएं

    java -jar yourApp.jar


9

आप के साथ चला सकते हैं:

java -cp .;app.jar package.MainClass

यह मेरे लिए काम करता है अगर जार फ़ाइल में कोई प्रकट नहीं होता है।


मैंने: अपरिचित विकल्प: -cp। क्या आप अपने उत्तर की समीक्षा कर सकते हैं? क्योंकि मैं नहीं करता कि यह कमांड क्या करने की कोशिश कर रहा है। (java -cp।; app.jar package.MainClass)। यह एक कमांड है, या दो?
kenorb

1
docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/… " -cp ।; app.jar" को अपने ऐप को जोड़ना चाहिए। वर्ग फ़ाइल को पथ से जोड़ा जाए, इससे आप MainClass.main () विधि चला सकते हैं: MainClass "पैकेज" पैकेज में है)।
Dainius

1
तो शायद लिनक्स पर यह विकल्प (-cp) मौजूद नहीं है (मेरा है java v1.6.0_24, OpenJDK रनटाइम एनवायरमेंट (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1.1)।
kenorb

java -version => जावा हॉटस्पॉट (TM) 64-बिट सर्वर VM (बिल्ड 20.1-b02, मिश्रित मोड) "java -cp। test1.Main" काम करता है
Dainius

/ usr / lib / jvm / java-6-openjdk-amd64 / bin / java -version => OpenJDK 64-बिट सर्वर VM (बिल्ड 20.0-b12, मिश्रित मोड) "/ us / lib / jvm / java-6-openjdk -dd64 / bin / java -cp। test1.Main "काम करता है
Dainius

6

मुझे यह त्रुटि मिली, और यह इसलिए था क्योंकि मेरे पास गलत क्रम में तर्क थे:

सही बात

java maui.main.Examples tagging -jar maui-1.0.jar 

गलत

java -jar maui-1.0.jar maui.main.Examples tagging 

1
यह केवल एक bsd मुद्दा हो सकता है, मुझे पूरा यकीन है कि मैंने इसे हाल ही में अन्य तरीके से किया है।
श्रीधर सरनोबत

1

यह सुनिश्चित करने का सबसे आसान तरीका है कि आपने रन करने योग्य JAR फ़ाइल को सही तरीके से बनाया है, उचित मैनिफ़ेस्ट फ़ाइल के साथ, आपके लिए इसे बनाने के लिए ग्रहण का उपयोग करना है। अपने ग्रहण परियोजना में, आप मूल रूप से मेनू से फ़ाइल / निर्यात का चयन करें, और संकेतों का पालन करें।

इस तरह, आप यह सुनिश्चित कर सकते हैं कि आपकी JAR फ़ाइल सही है और अगर कहीं कोई समस्या है तो वह कहीं और देखना चाहेगी। प्रक्रिया को अक्सर पूछे जाने वाले प्रश्न में वर्णित किया गया है कि मैं एक स्टैंड-अलोन SWT प्रोग्राम के लिए एक निष्पादन योग्य JAR फ़ाइल कैसे बनाऊँ?


Exportग्रहण आईडीई के लिए धन्यवाद ।
निन्ह फाम

1

प्रयत्न

java -cp .:mail-1.4.1.jar JavaxMailHTML 

manifestफ़ाइल की कोई आवश्यकता नहीं है ।


0

मुझे पता चला कि मुझे भी नेटबीन्स में यह त्रुटि आ रही थी। मुझे आशा है कि निम्नलिखित सहायक है।

  1. सुनिश्चित करें कि जब आप प्रोजेक्ट कॉन्फ़िगरेशन पर जाते हैं तो आप उस मुख्य वर्ग को सेट करते हैं जिसे आप चलाने का इरादा रखते हैं।
  2. एक बिल्ड या क्लीन बिल्ड करें
  3. जार फ़ाइल जहाँ आप चाहते हैं और आज़माएँ: java -jar "YourProject.jar" फिर से कमांड लाइन पर।

यह वह समस्या थी जो मुझे मिल रही थी क्योंकि मेरे पास अन्य "परीक्षण" कार्यक्रम थे जो मैं नेटबिन में उपयोग कर रहा था और मुझे यह सुनिश्चित करना था कि प्रोजेक्ट कॉन्फ़िगरेशन के रन भाग के तहत मुख्य वर्ग को सही ढंग से सेट किया गया था।

बहुत से आशीर्वाद, जॉन पी


0

जब मैं भागा तो मुझे वही त्रुटि मिल रही थी:
jar cvfm test.jar Test.class Manifest.txt

इसका हल क्या था:
jar cvfm test.jar Manifest.txt Test.class

मेरे प्रदर्शन में प्रवेश बिंदु है जैसा कि ओरेकल डॉक्स में दिया गया है (सुनिश्चित करें कि फ़ाइल के अंत में एक नई पंक्ति वर्ण है):
मुख्य-वर्ग: टेस्ट


0

मैंने उसी समस्या का सामना किया। यह यूनिक्स कमांड मुख्य वर्ग को खोजने में सक्षम नहीं है। इसका कारण यह है कि रनटाइम और संकलन समय JDK संस्करण अलग-अलग हैं। जावा को संकलक संस्करण बदलने के बाद ग्रहण के माध्यम से बनाओ। निम्नलिखित लिंक ने मेरी मदद की।

http://crunchify.com/exception-in-thread-main-java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

इस चरण के बाद बनाए गए जार को चलाने का प्रयास करें और फिर इसे निष्पादित करें


0

यदि आपका वर्ग पथ प्रकट रूप में पूरी तरह से निर्दिष्ट है, तो शायद आपको जावा रनटाइम वातावरण के अंतिम संस्करण की आवश्यकता है। जब मैंने jre 8 को पुन: स्थापित किया तो मेरी समस्या ठीक हो गई।


0

यदि आप ग्रहण का उपयोग कर रहे हैं, तो नीचे का प्रयास करें: 1. प्रोजेक्ट पर राइट क्लिक करें -> एक्सपोर्ट चुनें। एक्सपोर्ट डेस्टिनेशन में रनवेबल जार फाइल चुनें। जार का नाम दर्ज करें और "पैकेज आवश्यक ..." (दूसरा रेडियो बटन) चुनें। -> समाप्त

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.