2012-11-21 11 views
7

जावावे 7u7, JavaFX2 के रूप में पढ़ा गया हर जगह जेआरई और जेडीके के साथ बंडल नहीं किया गया है। इसलिए मैं उलझन में हूं कि जब मैं ग्रहण चलाता हूं, तो यह मुझे बताता है "आयात javafx को हल नहीं किया जा सकता"।जावा 7u9 और ग्रहण (जूनो) स्थापित किया गया है लेकिन एक्लिप्स को JavaFX2

मेरे पास कोई अन्य जेडीके या जेआरई स्थापित नहीं है लेकिन 7u9 है, तो मैं एक्लिप्स से जावाएफएक्स 2 क्यों नहीं देख पाऊंगा?

बहुत धन्यवाद :)

+0

क्या आपको यकीन है कि आपके प्रोजेक्ट बिल्ड पथ में jfxrt.jar फ़ाइल है? – invariant

+0

क्या आपने अपना ग्रहण डिफ़ॉल्ट जांच लिया है और परियोजना jdk सेटिंग नए जावा 7 का उपयोग कर रही है? – Quinma

+0

यह चाल है, invariant! मुझे लगता है कि यह जावा 7 में एकीकृत किया गया था, यह स्वचालित रूप से इसे देखेगा, यह सब तब होगा जब जार को "सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.7.0_09 \ jre \ lib" ओह ठीक है, धन्यवाद : डी –

उत्तर

8

दुर्भाग्य से, jdk7u9 के लिए, ग्रहण jfxrt.jar फ़ाइल परियोजना का निर्माण पथ पुस्तकालयों के लिए अपने jre\lib निर्देशिका से जब हम एक नया जावा परियोजना बनाने नहीं जोड़ता है। आप या इसे मैन्युअल रूप से करना है आप ग्रहण करने के लिए है, जो अपने JavaFX विकास आसान :) कर देगा e(fx)clipse प्लगइन स्थापित कर सकते हैं

ग्रहण JRE 7u9 डिफ़ॉल्ट बूट classpath के लिए डिफ़ॉल्ट सेटिंग्स (शामिल नहीं करने के jfxrt.jar है) पीछा कर रहा है । एक भविष्य जेआरई संस्करण बूट क्लासपाथ पर jfxrt.jar रखेगा, इसलिए आपको परियोजना निर्माण पथ पुस्तकालयों में jfxrt.jar फ़ाइल मैन्युअल रूप से जोड़ने की आवश्यकता नहीं होगी। आप इस JRE feature को ट्रैक कर सकते हैं।

+0

@jewelsea आपका संपादन इस मुद्दे के मूल कारण को स्पष्ट करता है, धन्यवाद :) – invariant

+3

मैंने ई (एफएक्स) क्लिपसे इंस्टॉल करने का प्रयास किया लेकिन फिर भी वही त्रुटि प्राप्त हुई। ई (एफएक्स) क्लिपसे स्थापित करने के बाद – trusktr

+0

, क्या आप नई जावाफाक्स परियोजना या जावा परियोजना बना रहे हैं? – invariant

2

प्रोजेक्ट बिल्ड पथ में jfxrt.jar जोड़ना ग्रहण को सक्षम करने के लिए सक्षम करेगा और आपको ग्रहण के भीतर से अपना कोड विकसित और निष्पादित करने की अनुमति देगा। हालांकि, जब आप अपने सॉफ़्टवेयर को तैनात करते हैं, तो यह अब तक jfxrt.jar नहीं ढूंढ पाएगा जबतक कि आप इसे क्लासपाथ पर भी न रखें। यह गन्दा हो जाता है क्योंकि आपको jdk/jre के स्थान को ढूंढने और jfxrt.jar के स्थान के अंदर खोजना है।

मैं क्या समझ से, दीर्घकालीन योजना lib/ext फ़ोल्डर में jre में lib फ़ोल्डर से jfxrt.jar स्थानांतरित करने के लिए है। यह इसे कहीं भी रखेगा जहां इसे डिफ़ॉल्ट रूप से आपके क्लासपाथ में सामान जोड़ने की आवश्यकता के बिना पाया जाता है। दुर्भाग्यवश जावा 8 जारी होने से पहले ऐसा होने की संभावना नहीं है!

इस बीच, सबसे आसान समाधान jar उपकरण की बजाय अपनी जार फ़ाइल बनाने के लिए बंडल javafxpackager टूल का उपयोग करना प्रतीत होता है। ant आधारित समाधान भी है, लेकिन मैं इसके बारे में परिचित नहीं हूं। पैकेजर आपकी जार फ़ाइल बनाएगा, और एक लॉन्चर क्लास डालें जो jfxrt.jar पाता है और गतिशील रूप से रनटाइम पर आपके ऐप के क्लासपाथ में जोड़ता है। यह भी शिकायत करता है कि jre या स्थापित javafx बहुत पुराना है और उपयोगकर्ता को एक नया संस्करण डाउनलोड करने के लिए संकेत देता है। फिर यह आपके आवेदन को कमांड लाइन पर निर्दिष्ट कक्षा के माध्यम से कॉल करता है। (आमतौर पर कक्षा main() विधि के साथ)।

यह देशी जावाफैक्स अनुप्रयोगों और सादे पुराने स्विंग अनुप्रयोगों दोनों के लिए काम करता है। यदि आपके पास अपनी जार फ़ाइल के प्रकट होने में अतिरिक्त सामान था, जैसे कि अन्य क्लासपाथ एंट्री, तो आप नई जार फ़ाइल में शामिल करने के लिए कमांड लाइन पर भी निर्दिष्ट कर सकते हैं।

+0

अद्भुत! हम शुरुआती समस्या को हल करने के बाद से लंबे समय तक चाहते थे, लेकिन अभी भी इसे प्रभावी तरीके से पैकेज करने की समस्या अभी भी थी। आप महोदय, एक अच्छे इंसान हैं, और शायद मेरी टीमों ने कुछ अच्छे बैंडों को ग्रेड किया है! :) चीयर्स! –

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