2014-06-20 8 views
7

मैं Maven प्लगइन का उपयोग इस तरह मुख्य वर्ग सेट करने के लिए:निर्दिष्ट करें मुख्य वर्ग वसंत-बूट कमांड लाइन

<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId> 
<configuration> 
    <mainClass>com.myapp.main.MainClass</mainClass> 
</configuration> 
</plugin> 

लेकिन कभी कभी मैं एक और मुख्य वर्ग के साथ मेरी अनुप्रयोग चलाने चाहते हैं। ऐसा करने के लिए कमांड लाइन तर्क क्या है?

java -jar myapp-1.0.jar ... 

Thx

+0

+1। मेरे पास एक ही सवाल है (मैं अपना खुद का "मास्टर" मुख्य वर्ग लिखने के लिए बस गया हूं जो पहले तर्क को देखता है और फिर कहीं और भेजता है, ताकि आप पूर्ण श्रेणी के नामों और अजीब-डी सामान के बिना एक अच्छी कमांड लाइन प्राप्त कर सकें, लेकिन यह जानना अच्छा होगा कि आप किसी भी कक्षा को चलाने के लिए कब चाहते हैं जिसे आपने समय से पहले नहीं सोचा था)। – Thilo

+0

[जेएआर के अंदर एकाधिक रनने योग्य कक्षाओं, उन्हें कैसे चलाएं?] के संभावित डुप्लिकेट? (Http://stackoverflow.com/questions/3976514/multiple-runnable-classes-inside-jar-how-to-run-them) –

+0

विनय लोढा, नहीं, यह काम नहीं कर रहा है: 'थ्रेड में अपवाद "मुख्य" java.lang.NoClassDefFoundError: org/springframework/beans/beansException' – etig

उत्तर

5

एक launcher for that in Spring Boot already नहीं है। आपको मुख्य श्रेणी (by setting the layout in the build config) के रूप में जार बनाने की आवश्यकता है।

java -cp my-app.jar -Dloader.main=myApplicationClass org.springframework.boot.loader.PropertiesLauncher 
+1

और आप प्रॉपर्टी लांचर प्राप्त करने के लिए लेआउट को "ज़िप" पर सेट करना चाहते हैं। – Thilo

+0

मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन अभी भी एक सवाल है। तो क्या आपको अलग-अलग मेन के साथ 2 अलग-अलग जार बनाने की ज़रूरत है? या इसे उसी जार में कमांड लाइन पैरामीटर के रूप में निर्दिष्ट किया जा सकता है? – amitection

+0

क्या आपको यह देखा गया: http://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#executable-jar-property-launcher- विशेषताएं? –

15

निम्न आदेश चाल क्या करेंगे आप सीधे कर सकते हैं जार की मेटा-आईएनएफ/MANIFEST.MF फ़ाइल में loader.main प्रॉपर्टी को संशोधित करें, यदि आप एक अधिक स्थिर समाधान के साथ ठीक हैं।

+1

आईएमओ उन लोगों के लिए सबसे अच्छा समाधान है जो गड़बड़ नहीं करना चाहते हैं/उनके मेवेन कॉन्फ़िगरेशन। –

1

विंडोज PowerShell से निष्पादित मैं इस प्रारूप की जरूरत (उद्धरण के साथ):

java -cp .\myjarfile.jar -D"loader.main=com.app.etc.FullyQualifiedMainClass" org.springframework.boot.loader.PropertiesLauncher

स्वीकार किए जाते हैं जवाब स्पष्ट करने के लिए: