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

时间:2014-12-01 19:24:38

标签: 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(); 
}

}

我正在尝试将其作为

运行
  

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

1 个答案:

答案 0 :(得分:6)

用以下方法替换main方法:

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

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

但是由于groovy在java代码中运行良好,为什么要这么麻烦?迁移部件,最好使用groovy并暂时保留java部件。

相关问题