2012-09-02 19 views
7

मैं अपने javafx एप्लिकेशन को एक जार फ़ाइल में बदलने के लिए पूरे दिन कोशिश कर रहा हूं। मैं जावा 1.7 अपडेट 7 का उपयोग कर रहा हूं।इंटेलिज जावाफक्स आर्टिफैक्ट - आप इसे कैसे बनाते हैं?

ओरेकल में some information है, लेकिन यह बस पूरे स्थान पर बिखरा हुआ लगता है। Intellij लगभग काम कर रहा है, लेकिन मैं निम्नलिखित त्रुटि मिलती है:

java.lang.NoClassDefFoundError: javafx/application/Application 

कौन सा कहना है कि मैं जावा बताने के लिए जहां jfxrt.jar है ... मैं अपने classpath जानकारी को यह जार जोड़ देते हैं तो जरूरत है लगता है

Could not find or load main class com.downloadpinterest.code.Main 

यह में jfxrt.jar शामिल करने के लिए अजीब लगता है: IntelliJ में प्रकट निर्माण - ctrl + shift + Alt + s -> कलाकृतियों - -> आउटपुट लेआउट टैब> कक्षा पथ, तो मैं एक और त्रुटि मिलती है मेरे वर्ग पथ हालांकि ...

मैंने एक चींटी स्क्रिप्ट बनाने की भी कोशिश की है, लेकिन मुझे लगता है कि इंटेलिजे 90 है वहां से%% - और मुझे यह जानने में थोड़ा सा मदद चाहिए कि मुझे jfxrt.jar को शामिल करने की आवश्यकता क्यों है, और मेरा मुख्य वर्ग क्यों नहीं मिला है (मुझे लगता है कि मुझे इसे किसी भी तरह से कक्षा में जोड़ने की ज़रूरत है ?)।

क्या कोई मुझे क्या हो रहा है के बारे में बता सकता है? मेरे पास एक बुनियादी गुई था जो ठीक काम करता था, लेकिन जावाएफएक्स जीवन को जटिल बना रहा है!

उत्तर

4

आपकी धारणा सही है, आपको क्लासपाथ में JavaFX जोड़ने की आवश्यकता है।
यह [JDK]/jre/lib/jfxrt.jar में स्थित है।

कार्यावधि में JavaFX प्रदान करने के लिए, आप अपने आवेदन, इस Oracle guideया में सचित्र जावा 7 अद्यतन 6 अपने अनुप्रयोग के लिए एक आवश्यकता बनाने के साथ यह बंडल सकता है, तो आवेदन के जल्द से जल्द classpath को [JAVA_HOME]/lib/jfxrt.jar जोड़ें।

पहला विकल्प आपके लिए अधिक काम का मतलब है, लेकिन यह सुनिश्चित करता है कि सभी उपयोगकर्ताओं के पास लाइब्रेरी का एक ही संस्करण है - और आप जेआरई को भी बंडल कर सकते हैं, जबकि आप इसमें हैं। दूसरा संस्करण इस निश्चितता की पेशकश नहीं करता है, लेकिन यह महसूस करना आसान है।

दूसरे विकल्प के रूप में एक संस्करण के रूप में - यदि जेआरई को बंडल करना वास्तव में आपके लिए संभव है - तो आप इसे अपने वितरण में भी बंडल कर सकते हैं और फिर शेल-स्क्रिप्ट/बैच-फ़ाइल/निष्पादन योग्य-रैपर शामिल कर सकते हैं ताकि आप इसे बना सकें कार्यक्रम इसका इस्तेमाल करें। इस तरह, आपको विकल्प I से सभी निश्चितता मिलती है जिसमें विकल्प II से केवल कठिनाई में केवल मध्यम वृद्धि होती है।

+0

मैंने देखा कि जब मैं ऐसा करता हूं तो इंटेलिज बस जार मैनिफेस्ट में एक रेखा जोड़ता है जिसमें क्लासपाथ होता है (यह मेरे जार में jfxrt को बंडल नहीं करता है)। ऐसा लगता है कि यह एक मुद्दा होगा जब अन्य लोग मेरे प्रोग्राम को डाउनलोड करते हैं और इसका उपयोग करने का प्रयास करते हैं - यानी कुछ लोगों के पास मैक, कुछ लिनक्स, कुछ खिड़कियां हैं, और पथ jfxrt.jar अलग-अलग लोगों के लिए अलग होगा। क्या आप इस समस्या को हल करने के लिए जानते हैं? –

+0

मैंने इसे कवर करने के लिए उत्तर अपडेट किया है। –

+0

धन्यवाद, मैंने ऑरैकल से पूछा है कि अगर कोई पूर्ण चींटी उदाहरण है तो कहीं भी मैं केवल एंटी स्क्रिप्ट बनाने में कामयाब रहा हूं। यदि मैं एक ढूंढता हूं या एक बनाने का प्रबंधन करता हूं तो मैं एक पोस्ट करूंगा! –

4

मुझे एक ही समस्या थी। लेकिन मुझे यह ब्लॉग पोस्ट मिला: Packaging JavaFX 2 Applications in IntelliJ IDEA 12.1 जो दिखाता है कि इंटेलिज़ 12.1

स्पष्ट रूप से इंटेलिजे में विशेष "जावाएफएक्स एप्लिकेशन" आर्टिफैक्ट बनाने की क्षमता है। यह स्वचालित रूप से आपके जार-फ़ाइल में आवश्यक सभी चीज़ों को बंडल करता है।

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