2012-12-19 18 views
9

में JSObject हल करने में सक्षम नहीं रहा JApplet की init विधि में JSObject.getWindow(this) कॉल करने के लिए कोशिश कर रहा हूँ, लेकिन यह प्रतीक getWindow हल करने में सक्षम नहीं है।एक जावा एप्लेट परियोजना

यह समस्या विशेष रूप से नेटबीन्स के माध्यम से बनाई गई जावाफक्स एप्लिकेशन प्रोजेक्ट के साथ हो रही है, अगर जावा एप्लिकेशन प्रोजेक्ट में उपयोग किया जाता है तो GetWindow को हल किया जा रहा है।

मैंने पथ Java\jdk1.7.0_07\jre\lib से plugin.jar भी शामिल किया है।

यह एक जावफैक्स एप्लिकेशन प्रोजेक्ट है जिसे मैंने नेटबीन में बनाया है।

+1

* "यह प्रतीक प्राप्त करने में सक्षम नहीं है विन्डो।" * क्या इसका मतलब 'रिटर्न' नल 'जैसा है या यह कुछ और है? क्या आपके पास एक लिंक है जहां हम ऐप पर जा सकते हैं। (और इसे असफल देखें)? त्रुटि के ट्रिगर करने वाले कोड के [SSCCE] (http://sscce.org/) को भी जोड़ने में मददगार हो सकता है - इसमें 2 दर्जन से अधिक लाइनें नहीं लेनी चाहिए। –

+0

से संबंधित हो सकता है: मैं जावा 8 प्रारंभिक बिल्ड के साथ निर्माण कर रहा हूं, और कम से कम 72 के निर्माण के बाद से मुझे इस विधि ('com.netscape.JSObject.getWindow') का उपयोग करके एप्लेट्स के लिए संकलन विफलता भी मिलती है। – haylem

+2

मैंने दायर किया [RT-30622 इस समस्या को ट्रैक करने के लिए जावाएफएक्स प्रोजेक्ट के खिलाफ जावा एप्लेट परियोजना में JSObject.getWindow (यह) को हल करने में सक्षम नहीं है] (https://javafx-jira.kenai.com/browse/RT-30622) । – jewelsea

उत्तर

13

इसका कारण यह है कि jfxrt.lib में JSObject नामक एक वर्ग भी है। यह JSObject में getWindow फ़ंक्शन परिभाषित नहीं है जबकि plugin.jar में है। यदि आप JAR के निर्भरता क्रम को बदलते हैं और JSObject को plug.jar पर हल करने के लिए जावा बनाते हैं तो जावा getWindow फ़ंक्शन को कॉल करने में सक्षम है।

दोनों कक्षाओं के जावडॉक्स के लिंक निम्नलिखित हैं। नोट करें कि jfxrt किसी को नहीं मिला है विन्डो परिभाषित किया गया है।

http://docs.oracle.com/javafx/2/api/netscape/javascript/JSObject.html

http://www.oracle.com/webfolder/technetwork/java/plugin2/liveconnect/jsobject-javadoc/netscape/javascript/JSObject.html

1

क्या आपने import netscape.javascript.*; किया था?

+0

हाँ, मैंने शामिल किया था। –

+0

मैं नेटबीन से परिचित नहीं हूं, आपको यह जांचना चाहिए कि आपने अपने क्लासपाथ में प्लगइन.जर जोड़ा है या नहीं। – tchike

+0

क्या आप सीधे अपने नेटबीन से एप्लेट चला रहे हैं या आप ब्राउज़र से चल रहे हैं? शायद वहां एक अंतर है। –

1

init विधि

JSObject में JSObject.getWindow(this) कॉल करने के लिए कोशिश कर रहा है आम तौर पर उपलब्ध नहीं है जब तक start() कहा जाता है।

+0

यहां तक ​​कि शुरुआत में यह हल करने में सक्षम नहीं है, एक संकलन त्रुटि दे रहा है जो बताता है कि GetWindow प्रतीक नहीं मिला है। हालांकि यह JSObject को पहचानने में सक्षम है। यह तब होता है जब मैं नेटबीन्स में जावाफक्स एप्लिकेशन प्रोजेक्ट बना रहा हूं, यह जावा एप्लिकेशन प्रोजेक्ट के साथ ठीक काम कर रहा है। –

4

मैं इंटेलिजे का उपयोग कर रहा हूं और अभी एक समान समस्या का सामना कर रहा हूं।

मुझे लगता है कि क्या हो रहा है यह है कि jfxrt.jar और plugin.jar दोनों में netscape.javascript.JSObject कक्षाएं हैं, लेकिन दोनों वर्गों में अलग-अलग हस्ताक्षर हैं। IntelliJ कक्षाओं में वर्णमाला क्रम में jre/lib से जार जोड़ रहा था।

IntelliJ को क्लासपाथ में jfxrt.jar जोड़ने के लिए नहीं कहकर मैं अपनी समस्या को हल करने में सक्षम हूं क्योंकि मैं JavaFX का उपयोग नहीं कर रहा हूं।

यह इंगित करने के लिए कि जावाएफएक्स को JSObject का उपयोग करने के लिए एक अलग दृष्टिकोण की आवश्यकता है - मैं JavaFX पर कोई विशेषज्ञ नहीं हूं (यहां तक ​​कि शुरुआत भी नहीं) लेकिन निम्न पृष्ठ उपयोगी दिखता है और मुझे सुझाव देता है कि जावास्क्रिप्ट को जावास्क्रिप्ट में अलग करना है WebEngine.executeScript() का उपयोग करके: https://blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx

1

@deorvatsingh यहाँ NetBeans आपको जोड़ा जार के साथ नहीं समस्या है। JavaFX में आवेदन jfxar.jar दिखाई कारण thats NetBeans मामलों में पहले

NetBeans और fxappication के साथ इस को क्रियान्वित करने के लिए आपको सबसे पहले jfxrt plugin.jar तो जोड़ने है, तो आप अपने JSObject.getWindow(this) के लिए गुंजाइश प्राप्त करने में सक्षम नहीं हैं। अपने आवेदन के लिए जार तो यह पहचान जाएगा।

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