2017-01-19 4 views
20

ग्रहण के साथ कई पुस्तकालयों के साथ एक परियोजना से एक चलने योग्य JAR बनाने की मेरी प्रक्रिया है।मैं इंटेलिजे में एक रननेबल जेएआर कैसे बना सकता हूं क्योंकि मैं ग्रहण

निर्यात> Runnable JAR> लांच विन्यास का चयन करें> पैकेज उत्पन्न जार में आवश्यक पुस्तकालयों> समाप्त

यह जो मैं अपने सर्वर से एफ़टीपी और ठीक से चलाने मेरी निर्यात गंतव्य में एक भी जार पैदा करता है।

मैंने हाल ही में विभिन्न कारणों से इंटेलिजे में स्विच किया है और यह मेरे जेएआर बनाने के अलावा सभी मामलों में सुधार रहा है जो मुझे अस्थायी रूप से ग्रहण करने के लिए मजबूर करता है।

इंटेलीजे मैं के साथ

:

ओपन परियोजना संरचना> कलाकृतियों और निर्भरता के साथ मॉड्यूल से एक नया जार पैदा करते हैं। मैं तो जार के नाम के साथ मेरी उत्पादन लेआउट है, यह अंदर एक META-INF और प्रारूप Extracted <lib.jar/> (खेद है कि मैं इस वीपीएन पर स्क्रीनशॉट अपलोड नहीं कर सकते।)

मैं अपने विरूपण साक्ष्य का निर्माण के साथ अपने सभी libaries (जो

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 

मैं कैसे की नकल मैं इसे कैसे ग्रहण में क्या करते: 15MB के बारे में बड़ा) और मेरे सर्वर पर FTP, इसे चलाने के लिए कोशिश करते हैं और मैं त्रुटि मिलती है?

संपादित

दो जार बनाई गई हैं कि काफी भिन्न होते हैं:

वैध जार कि ग्रहण इस तरह दिखता है बनाता है: Good jar

जबकि अवैध .JAR इस तरह दिखता है: Bad jar

+0

यह एक Maven परियोजना है के साथ सामान्य रूप से runnable जार पर अमल कर सकते हैं? आप इसे 'maven-shade-plugin' – nandsito

+0

का उपयोग करके कर सकते हैं, यह दुख की बात नहीं है। – Nanor

+0

आप '' jar' कार्य रन जार कार्य में 'जार में जोड़ सकते हैं मुख्य Class' { \t प्रकट { \t \t विशेषताओं के मुख्य-क्लास ':' वर्ग के नाम ' \t} से \t { \t \t configurations.compile .collect { \t \t \t it.is निर्देशिका()? यह: zipTree (यह) \t \t} \t} } ' – mallaudin

उत्तर

7

आप दो मुद्दों का सामना कर रहे एक प्रमुख लगता है और एक नाबालिग है:

  • मेजर: हस्ताक्षर अपवाद
  • माइनर : जार का आकार ग्रहण द्वारा उत्पादित जार से 15 एमबी अधिक है।

दोनों मुद्दों का समाधान आर्टिफैक्ट बनाने के तरीके में है। सबसे पहले, सभी extracted *.jar हटाएं, फिर आकृति में दिखाए गए उपलब्ध तत्व पैन से सभी जार जोड़ें।

Dependencies screenshot

ऐसा नहीं है कि पैक (संपीड़ित) जार जोड़ने केवल, आकार में कमी होगी स्पष्ट है। लेकिन यह हस्ताक्षर मुद्दे भी हल करता है। अधिक स्पष्टीकरण के लिए, कृपया इस article पर एक नज़र डालें। मैं केवल एक पंक्ति उद्धृत करूंगा।

It's probably best to keep the official jar as is and just add it as a dependency in the manifest file......

ऐसा लगता है कि निर्भरता के कुछ किया हो और पैकेजिंग अपनी परियोजना के META-INF को खराब करता।

+1

मुझे हमेशा डेन्स पसंद आया। – Nanor

+0

धन्यवाद लेकिन मेरा नाम "डेनिश" है :) –

0

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

2) के साथ मॉड्यूल से> चेक परियोजना का निर्माण chackbox में शामिल करें -

1) फ़ाइल -> परियोजना संरचना -> परियोजना सेटिंग्स -> कलाकृतियों -> जार:

0

अगले चरणों के साथ प्रयास करें ।

3) मॉड्यूल पर राइट माउस क्लिक -> मॉड्यूल का निर्माण 'ModuleName'

0

If you are using Maven you need to put META-INF directory under /main/resources folder instead of main/java .

संदर्भ: Intellij - Nikolay Chashnikov

तो फिर तुम java -jar filename.jar

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