2012-10-23 13 views
22

मैंलगता है नहीं किया जा सका या के साथ एक जार फ़ाइल

Manifest-Version: 1.0 
Main-Class: classes.TestClass 

जार निर्देशिका में प्रकट साथ एक जार

@echo off 
java -jar Test.jar 
pause 

का उपयोग कर लोड करने के लिए कोशिश कर रहा हूँ मुख्य वर्ग लोड करते हैं, मैं स्पष्ट रूप से देख सकते हैं जब मैं इसे निकालता हूं तो कक्षाएं \ TestClass फ़ाइल।

संपादित करें: classes.TestClass में public static void main(String[] args) है। classes.TestClass में

पैकेज मंदी package classes;

है लेकिन मैं अभी भी त्रुटि संदेश

Could not find or load main class classes.TestClass 

मैं सब कुछ के माध्यम से किया गया है मैं इस समस्या के साथ मिल गया है मिल रही है, और यह से कोई भी मदद करने लगता है।

मैंने क्लासपाथ को संपादित करने, मैनिफेस्ट को फिर से शुरू करने, नए जेआरई को स्थापित करने का प्रयास किया है।

मुझे और क्या करना चाहिए?

+1

क्या टेस्ट क्लास में मुख्य कार्य होता है? – Baz

+1

@ बाज़ हां, इसकी मुख्य विधि है। – Austin

+2

क्या आप वाकई 'टेस्ट क्लास' के लिए पैकेज नाम 'कक्षा' है? –

उत्तर

7

1. बनाएँ एक पाठ फ़ाइल Manifest.txt calles और के रूप में

मुख्य-क्लास मूल्य प्रदान करते हैं: classes.TestClass

2.Create

के रूप में जार जार cfm test.jar Manifest.txt कक्षाएं/* कक्षा

के रूप में

जावा जार test.jar

+0

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

+0

मैं कमांड लाइन का उपयोग कर कक्षा को ठीक से चला सकता हूं। जावैक जैसे अन्य जावा कमांड के साथ। – Austin

1

यह पूरी जानकारी के बिना डिबग करने के लिए बहुत मुश्किल है जार 3.Run।

इस बिंदु पर दो सबसे संभावित दिखने वाली चीजें हैं कि या तो जार में फ़ाइल को जार के भीतर निर्देशिका में संग्रहीत नहीं किया जाता है, या यह सही फ़ाइल नहीं है।

आपको TestClass.class को संग्रहीत करने की आवश्यकता है - इस स्टोर में कुछ लोग स्रोत फ़ाइल, TestClass.java पर नए हैं।

और आपको जार फ़ाइल बनाने की आवश्यकता है ताकि TestClass.class कक्षाओं के पथ के साथ प्रकट हो। सुनिश्चित करें कि यह "/ वर्ग" नहीं है। फ़ाइल को देखने के लिए ज़िप का प्रयोग करें और सुनिश्चित करें कि इसमें "कक्षाएं" का मार्ग है।

package classes; 

public class TestClass { 

    public static void main(String[] args) { 
     System.out.println("Test"); 
    } 

} 

उपयोग javac कमांड लाइन पर

TestClass.JavaTestClass.class निर्माण करने के लिए:

13

मुझे मिल गया यह इस तरह काम कर रहे। classes/ फ़ोल्डर में TestClass.class डालें।

MANIFEST.MF

Manifest-Version: 1.0 
Main-Class: classes.TestClass 

फिर

jar cfM MANIFEST.MF test.jar classes/ 

चलाने तब के रूप में

java -jar test.jar 
+3

मैं उत्तर में एक बिंदु निहित टिप्पणी करना चाहता हूं: पथ के लिए "सीडी" करना महत्वपूर्ण है जो क्लासपाथ के रूप में उपयोग किया गया था TestClass.class एक जार फ़ाइल के बिना भाग गया था। उदाहरण के लिए, "सीडी/MyEclipseWorkspace/MyProject/bin" यदि, इसके बजाय, जार क्लास फ़ाइलों के पूर्ण पथ का उपयोग करता है जो "मुख्य वर्ग को ढूंढ या लोड नहीं कर सकता" त्रुटि के साथ विफल हो सकता है। उदाहरण के लिए, यह गलत है: jar cfm test.jar manifest.txt /absolutepath/classes/TestClass.class – Corral

+1

@ कोरल की टिप्पणी को अनदेखा नहीं किया जाना चाहिए। जब तक मैं इसे पढ़ता हूं तब तक मैं इस समस्या को हल करने की कोशिश कर अपने बालों को खींच रहा था, और अब मेरा जार पूरी तरह से चलता है। –

+0

'>% JAVAHOME% \ bin \ jar cfM MANIFEST.MF test.jar कक्षाएं/0 परिणाम 'test.jar: ऐसी कोई फ़ाइल या निर्देशिका' और' MANIFEST.JS' अब टूटा हुआ है (अब इसकी बाइनरी फ़ाइल)। –

2

मैं सिर्फ अंत में एक ही समस्या थी इसे चलाने के अपने क्योंकि मैं नकल की और कोड को शब्द से चिपकाया और यह थोड़ा अलग प्रकार का '-' चार था इस्तेमाल किया Acter, सभी मैं के बारे में सोच सकते हैं, जब मैं इसे में टाइप मैन्युअल रूप से इसे काम किया

11

जावा -cp "पूर्ण पथ के- अपने-जार" मुख्य

किसी अन्य वर्ग को चलाने के लिए thats होने "public static void मैं" कुछ पैकेज में,

जावा -cp "पूर्ण पथ के- अपने-जार" package1.package2.packages-hierarchy.ClassHavingMain

+2

जब आप कुछ कम करते हैं तो कृपया एक स्पष्टीकरण जोड़ें। –

+1

यदि आप अपने जार के समान निर्देशिका में हैं तो क्या आपको पूरा पथ रखना होगा? – Ungeheuer

+0

यह वास्तव में मेरी समस्या हल हो गया। मेरा manifest.md कभी काम नहीं करता ... –

1

ली पर सेंट इस प्रकार है जिस तरह से मैं यह कर दिया है के रूप में:

आप एक नेस्टेड src पेड़ है, तो (com.test.myclass.MyClass कहते हैं) और आप एक रूट निर्देशिका आप निम्न कार्य करने से संकलन कर रहे हैं:

1) जब आप जार बनाने के लिए (आमतौर पर एक स्क्रिप्ट में रखते): जार -cvfm my.jar कॉम/परीक्षण/MyClass/manifest.txt कॉम/परीक्षण/MyClass/MyClass.class

2) मैनिफेस्ट इस तरह दिखना चाहिए:

मेनफेस्ट-संस्करण: 1.0 मुख्य श्रेणी: com.test.myclass.MyClass कक्षा-पैट एच:। my.jar

3) अब आप कहीं भी इस तरह से जार चला सकते हैं:

जावा जार my.jar

आशा इस कोई मदद करता है

1

मैं निम्नलिखित निर्देशों का पालन एक बनाने के लिए एक्लिप्स में निष्पादन योग्य .jar। फिर प्रोग्राम लॉन्च करने के लिए "जावा -jar .jar" चलाएं।

यह मेनफेस्ट बनाने और आपके लिए मुख्य श्रेणी और लाइब्रेरी फ़ाइलों के हिस्सों को शामिल करने का ख्याल रखता है।

http://java67.blogspot.com/2014/04/how-to-make-executable-jar-file-in-Java-Eclipse.html

2

मैं एक ऐसी ही समस्या है जिसे मैं अमल-विशेषाधिकार सभी पैरेंट फ़ोल्डरों जिसमें जार-फ़ाइल (एक Linux सिस्टम पर) स्थित है के लिए प्रदान करके हल कर सकता था।

उदाहरण:

/folder1/folder2/folder3/executable.jar

सभी 3 फ़ोल्डर (फ़ोल्डर 1, folder2 और folder3) के रूप में अच्छी तरह से executable.jar वर्तमान उपयोगकर्ता के लिए निष्पादित-विशेषाधिकार की आवश्यकता के रूप में, अन्यथा त्रुटि "मुख्य वर्ग नहीं ढूंढ सका या लोड नहीं हो सका ..." वापस आ गया है।

0

मुझे एक अजीब समस्या थी जब MANIFEST.MF में एक गलत प्रविष्टि लोडिंग विफलता का कारण बन रही थी।

गलत::

Main-Class: jarek.ResourceCache 
Class-Path: D:/lang/scala/lib/scala-library.jar 

सही:

Main-Class: jarek.ResourceCache 
Class-Path: file:///D:/lang/scala/lib/scala-library.jar 

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

मैनिफेस्ट फ़ाइल में एक पूर्ण पथ का उपयोग करना इंटेलिजे एक प्रोग्राम के लिए एक लंबी कक्षापथ प्रदान करने के लिए उपयोग करता है।

संबंधित मुद्दे