2010-08-02 12 views
11

मैंने स्कैला एप्लिकेशन बनाया और अब मैं जार बनाना चाहता हूं। मैं mvn package चलाने की तुलना में मैं आदेशमेवेन-स्कैला-प्लगइन के साथ बिल्डिंग जार

java -jar target/burner-1.0-SNAPSHOT.jar

द्वारा जार को चलाने के लिए कोशिश करते हैं और मैं त्रुटि देखें:

Failed to load Main-Class manifest attribute from

मैं मुख्य-क्लास संपत्ति को कैसे परिभाषित कर सकते हैं? क्या मुझे Manifest.mf बनाने की आवश्यकता है? कहा पे? या मुझे pom.xml में कहीं मुख्य मेनस संपत्ति की आवश्यकता है?

अद्यतन: मैं बनाया है src/मुख्य/संसाधन/MANIFEST.MF सामग्री

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: itsabear 
Main-Class: ru.dmteam.App 
Build-Jdk: 1.6.0_20 

साथ फ़ाइल मैं फ़ाइल के अंत में खत्म होने वाली रेखा को भूल नहीं की। mvn package के बाद मुझे नया जार दिखाई देता है। मैं इस जार में MANIFEST.MF जाँच - यह सही मुख्य श्रेणी में शामिल है लेकिन जब मैं java -jar target/burner-1.0-SNAPSHOT.jar टाइप मैं अभी भी एक त्रुटि दिखाई Failed to load Main-Class manifest attribute from

मेरे pom.xml http://pastie.org/1070483

अद्यतन 2 मुझे पता चला कि अब देखते हैं जार में दो manifest.mf फ़ाइलें। MANIFEST.MF और META-INF/MANIFEST.MF मैं चले गए अपने कस्टम MANIFEST.MF सिर्फ META-INF फ़ोल्डर बनाया करने के लिए (src/मुख्य/संसाधनों में), लेकिन अब mvn package ओवरराइड यह जार बनाने के दौरान ...

+0

चल रहा है कि आप अपने pom.xml की एक प्रति पोस्ट कर सकते हैं के बाद के रूप में वांछित को चलाने के लिए? मैन्युअल रूप से एक मेनिफेस्ट फ़ाइल बनाने के बिना आप इसे मेवेन के भीतर ऐसा करने में सक्षम होना चाहिए। –

+0

मैंने पोस्ट अपडेट किया है। –

+0

मैंने कुछ नए तथ्यों की खोज की और पोस्ट को अपडेट किया। –

उत्तर

14

एक नया Maven परियोजना (एक साधारण परियोजना बनाने स्केला-मूलरूप आदर्श-सरल मूलरूप आदर्श इस्तेमाल करने के बाद कि प्रिंट 'नमस्ते विश्व '), मुझे अपने pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>test.App</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
में निम्नलिखित जोड़ने की आवश्यकता है

वर्ग test.App जब आदेश

java -jar ./target/mytest-1.0-SNAPSHOT-jar-with-dependencies.jar 

के साथ आमंत्रण को आदेश

mvn package 
+0

जब मैं एमवीएन पैकेज टाइप करता हूं तो मुझे त्रुटि '' सिंगल 'निष्पादन में निर्दिष्ट किया गया था, लेकिन प्लूइन' ' –

+0

में नहीं मिला है, इसलिए अब मैं कमांड एमवीएन असेंबली द्वारा काम कर रहा हूं: असेंबली लेकिन मुझे इसे कमांड के साथ चलाने की ज़रूरत है 'जावा-सीपी लक्ष्य/file.jar -DmainClass ru.dmteam.App'। क्या सही प्रकट के साथ जार बनाना संभव है? –

+0

घटक असेंबली निर्माण को सामान्य पैकेज चरण में बांधना चाहिए, क्या आपने इसे अपने pom.xml में शामिल किया है? प्रविष्टि को आपके मामले में ru.dmteam.App शामिल करने के लिए कॉन्फ़िगर किया जाना चाहिए। –

-1

आप जार इस तरह से चला सकते हैं

स्केला -cp लक्ष्य/ProjectName-1.0-SNAPSHOT.jar

+1

यह आदेश स्केल दुभाषिया कंसोल खोलता है। –

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