कहना चलें, हम निम्नलिखित वर्ग है:जावाएफएक्स 8 जावाफ़ैक्स एप्लिकेशन थ्रेड को लगभग खाली एप्लिकेशन क्लास में कैसे शुरू करता है?
import javafx.application.Application;
import javafx.stage.Stage;
public class Test extends Application
{
public Test()
{
System.out.println("Constructor");
}
@Override
public void start(Stage primaryStage) throws Exception
{
System.out.println("start");
}
public static void main(String... args)
{
System.out.println("main");
}
}
यह Application
से ली गई है, लेकिन वह अपने किसी भी विधि का उपयोग नहीं करता। आमतौर पर आप मुख्य में launch(args)
पर कॉल करके जावाएफएक्स एप्लिकेशन शुरू करते हैं।
जब मैं इस प्रोग्राम को शुरू करता हूं तो एकमात्र आउटपुट "मुख्य" होता है, इसलिए कन्स्ट्रक्टर और स्टार्ट नहीं कहा जाता है, लेकिन प्रोग्राम समाप्त नहीं होता है क्योंकि जावाएफएक्स एप्लीकेशन थ्रेड चल रहा है। लेकिन यह कहां से आता है?
मैंने कुछ डीबगिंग किया और पाया कि मुख्य विधि चलने से पहले थ्रेड मुख्य धागे से शुरू होता है। स्टैक ट्रेस NativeMethodAccessorImpl
के साथ शुरू होता है।
भी weirder प्राप्त करने के लिए: जब मैं एक अलग वर्ग से मुख्य विधि शुरू, JavaFX आवेदन धागा शुरू नहीं किया गया है:
public class Test2
{
public static void main(String[] args)
{
Test.main(args);
}
}
तो काला जादू की किस तरह यह है?
काले जादू के लिए उपरोक्त। – GGrec
दूसरी कक्षा में, टेस्ट 2, आपने अपनी मूल कक्षा घोषणा में एक विस्तारित आवेदन नहीं जोड़ा है। तो आपके रनटाइम में कोई इंकलिंग नहीं है कि जावाएफएक्स प्रक्रिया शामिल है - यह किसी अन्य प्रकार की जावा क्लास की मुख्य (।) विधि हो सकती है। – Trunk