2012-02-24 11 views
24

मुझे आश्चर्य है कि विंडोज शैल से जावाएफएक्स का उपयोग करके कोड कैसे संकलित करें।जावाएफएक्स 2.0 (कमांड लाइन का उपयोग करके) संकलित कोड

मैं fxservidor.java में इस कोड है:

public class Fxservidor extends Application { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) {   
     primaryStage.setTitle("Hello World!"); 
     Button btn = new Button(); 
     btn.setText("Say 'Hello World'"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       Synthetizer os = new Synthetizer("Ximena");     
      } 
     }); 

     StackPane root = new StackPane(); 
     root.getChildren().add(btn); 
     primaryStage.setScene(new Scene(root, 300, 250)); 
     primaryStage.show(); 
    } 
} 

उत्तर

24

ओरेकल जावा 8

आप ओरेकल जावा 8 या नए प्रयोग कर रहे हैं के रूप में अपने जवाब में cayhorstmann से कहा,, JavaFX कक्षाएं अब कर रहे हैं ओरेकल जावा कार्यान्वयन के लिए डिफ़ॉल्ट रनटाइम क्लासपाथ पर। आप अपने कार्यक्रम पर javac और java चला सकते हैं और जेआरई में किसी भी अन्य वर्ग की तरह जावाएफएक्स कक्षाएं अपेक्षित पाए जाएंगी।

javac Fxservidor.java 
java Fxservidor 

OpenJDK 8

आप OpenJDK 8 का उपयोग कर रहे हैं, तो आप (वर्तमान में) build the JavaFX sources को OpenJFX रिपोजिटरी से की जरूरत है और और के लिए विवरण के लिए इसी तरह अपने classpath पर परिणामी jfxrt.jar स्थापित करेंगे जावा 7 इस जवाब में परिभाषित किया गया है।

JavaFX 2.x/जावा 7

आप JavaFX कार्यक्रमों संकलित करने के लिए Java Compiler का उपयोग करें:

"%JDK_HOME%\bin\javac" -classpath "%JAVAFX_SDK_HOME%\rt\lib\jfxrt.jar" fxservidor.java 

क्रमशः अपने स्थापित JDK और JavaFX एसडीके के लिए रास्तों के साथ JDK_HOME और JAVAFX_SDK_HOME प्लेसहोल्डर बदलें ।

JavaFX 2.x कमांड लाइन विकास और तैनाती पैकेजिंग के लिए एक नमूना विंडोज बैच स्क्रिप्ट here प्रदान की जाती है।

यहाँ एक आदेश मैं अपने आवेदन संकलित करने के लिए मेरी मशीन पर भाग गया है (यदि आप अपने पर्यावरण के लिए classpath समायोजित करने की आवश्यकता):

javac -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor.java 

और यहाँ एक कमांड मैं संकलित वर्ग को चलाने के लिए प्रयोग किया जाता है:

java -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar;." Fxservidor 

नोट ;. टोकन Windows में जावा निष्पादन आदेश के classpath को वर्तमान निर्देशिका संलग्न करने के लिए प्रयोग किया जाता है (अगर एक यूनिक्स संस्करण का उपयोग कर, तो ;. के बजाय :. उपयोग करें)।

नमूना अनुप्रयोग

यहाँ जो संकलित कर देगा अपने कार्यक्रम का एक संशोधित संस्करण है:

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class Fxservidor extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override public void start(Stage primaryStage) {   
     primaryStage.setTitle("Hello World!"); 
     Button btn = new Button(); 
     btn.setText("Say 'Hello World'"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       System.out.println("Hello); 
      } 
     }); 

     StackPane root = new StackPane(); 
     root.getChildren().add(btn); 
     primaryStage.setScene(new Scene(root, 300, 250)); 
     primaryStage.show(); 
    } 

} 

तैनाती सिफ़ारिश

आप उपयोगकर्ताओं के लिए अनुप्रयोगों को विस्तृत रहे हैं, तो भी जावा के साथ, 8, यह अनुशंसा की जाती है कि आप प्रासंगिक पैकेजिंग उपकरण (जैसे JavaFX ant tasks, javafxpackager का उपयोग कर अनुप्रयोगों को पैकेज करें, javafx-maven-plugin या javafx-gradle-plugin)।

यदि आप छोटे प्रोग्रामों के कुछ त्वरित कमांड लाइन विकास और परीक्षण करना चाहते हैं, तो उन अतिरिक्त पैकेजिंग टूल की आवश्यकता नहीं है और आप केवल इस उत्तर में सरल चरणों का उपयोग कर सकते हैं।

+0

त्रुटि: प्रतीक नहीं मिला आवेदन – Jhuaraya

+0

मैंने आपके नमूना कोड से अनुपलब्ध आयात विवरणों को शामिल करने के लिए उत्तर अपडेट किया है, अपरिपक्व सिंथेथेज़र क्लास को टिप्पणी करें ताकि कोड संकलित और सटीक कमांड को जोड़ सके जिसे मैं संकलित और चलाने के लिए उपयोग करता हूं अद्यतन कार्यक्रम। – jewelsea

5
javac -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor.java 

मैं साथ JavaFX2.0 beta यह यह वर्ग फ़ाइलों संकलित उबंटू लिनक्स पर उपरोक्त आदेश भाग गया, लेकिन यह काम नहीं किया जब मैं इस आदेश के साथ भागने की कोशिश की।

java -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor 

यह मैं त्रुटि संदेश है:

Error: Could not find or load main class Fxservidor

+2

मैंने अपना उत्तर अपडेट किया: लिनक्स के तहत आपको रनटाइम क्लासपाथ में ': .' को जोड़ना होगा ताकि जावा रनटाइम को आपके द्वारा वर्तमान निर्देशिका में संकलित कक्षाओं को ढूंढने की अनुमति मिल सके। – jewelsea

8

मैकबुक में, OSX, आदि, आप संकलन कर सकते हैं:

javac -cp "/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor.java 

और चलाएँ:

java -cp ".:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor 

के बजाय .: पर ध्यान दें

1

कच्चे लेकिन सरल समाधान अपने जावा स्थापना के तहत .../jre7/lib/ext निर्देशिका में jfxrt.jar फ़ाइल की एक प्रतिलिपि डाल करने के लिए है।

फिर, आपको हमेशा अपने क्लासपाथ पर उपलब्ध होना चाहिए।

नहीं ज़ाहिर है, JFX ऐप्स को वितरित करने के लिए सिफारिश की, लेकिन डेवलपर चारों ओर खेलने के लिए सुविधाजनक ...

(विवरण के लिए, देखें: http://docs.oracle.com/javase/tutorial/ext/basics/install.html)

3

Fwiw, JDK 8 में, JavaFX जार रहा है क्लासपाथ पर रखने के बिना उपलब्ध रहें।

path/to/jdk1.8.0-b96/bin/javac HelloWorld.java 
path/to/jdk1.8.0-b96/bin/java HelloWorld 

आपके जैसी अपेक्षा करता है।

+0

हाँ, मेरा उत्तर दिनांकित था - मैंने इसे नई जानकारी शामिल करने के लिए अपडेट किया। – jewelsea

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