【问题标题】:It is possible to use JavaFX in Groovy using the same syntax as in Java?是否可以在 Groovy 中使用与 Java 中相同的语法来使用 JavaFX?
【发布时间】:2014-12-01 19:24:37
【问题描述】:

我正在使用 jdk1.8.0_25。

我正在尝试运行一个 JavaFX 应用程序文件,当命名为“HelloWorldMain.java”时,它可以使用 javac/java 编译并运行正常。我将它重命名为“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

【问题讨论】:

    标签: groovy javafx


    【解决方案1】:

    将main方法替换为:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多