我正在使用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
答案 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部件。