是否可以在Groovy中使用与Java中相同的语法来使用JavaFX?

use*_*214 2 groovy javafx

我正在使用jdk1.8.0_25。

我正在尝试运行JavaFX应用程序文件,在该文件下,该文件名为“ HelloWorldMain.java”时,将使用javac / java编译并运行OK。我将其重命名为“ HelloWorldMain.groovy”,并且无法使用Groovy运行它。

是否有一种简单的方法可以使用Groovy进行运行而无需进行任何修改或进行最少的修改,最好不要使用GroovyFX这样的附加软件?而且,如果我必须使用GroovyFX,是否可以运行此纯Java代码而不作任何修改?

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

/** 
* 
* @author cdea 
*/ 
public class HelloWorldMain extends Application {

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

@Override 
public void start(Stage primaryStage) { 
    primaryStage.setTitle("Hello World"); 
    Group root = new Group(); 
    Scene scene = new Scene(root, 300, 250); 
    Button btn = new Button(); 
    btn.setLayoutX(100); 
    btn.setLayoutY(80); 
    btn.setText("Hello World"); 
    btn.setOnAction(new EventHandler<ActionEvent>() { 
        public void handle(ActionEvent event) { 
            System.out.println("Hello World"); 
        }
    }); 
    root.getChildren().add(btn); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
}

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试以

groovy HelloWorldMain.groovy

并在命令行中获得以下输出:

Caught: java.lang.RuntimeException: java.lang.ClassNotFoundException:             javafx.application.Application$launch
java.lang.RuntimeException: java.lang.ClassNotFoundException:     javafx.application.Application$launch
        at javafx.application.Application.launch(Application.java:260)
        at javafx.application.Application$launch.call(Unknown Source)
        at HelloWorldMain.main(HelloWorldMain.groovy:20)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application$launch
        at javafx.application.Application.launch(Application.java:248)
        ... 2 more
Run Code Online (Sandbox Code Playgroud)

cfr*_*ick 7

将main方法替换为:

public static void main(String[] args) {
    launch(HelloWorldMain, args);
}
Run Code Online (Sandbox Code Playgroud)

该错误基本上为您提供了答案:不,您不能只在所有情况下都复制文件。groovy和java之间有区别(例如,http : //groovy-lang.org/differences.html)。Groovy附带了一个名为的工具java2groovy可能有助于迁移。

但是随着groovy在Java代码上运行良好,为什么还要麻烦呢?迁移那些使用groovy更好的部件,并暂时保留Java部件。