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

2024-01-09

我使用的是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

将 main 方法替换为:

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

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

但由于 groovy 可以很好地运行 java 代码,为什么还要麻烦呢?迁移这些部分,最好使用 groovy 并暂时保留 java 部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Orange() 与 range() 和 xrange() 有什么不同?

    当我遇到这个时 我正在浏览 Python Generators Wiki范围发生器 https wiki python org moin RangeGenerator谈论的页面irange 这将使我们能够对大范围的数字进行迭代 而无需 求助
  • JavaScript 有元组吗?

    我很想知道 JavaScript 中是否有 python 类型元组 我正在开发一个项目 我需要只使用对象列表而不是数组 JavaScript 不支持元组数据类型 但在数组解构的帮助下 可以像元组一样使用数组 有了它 数组可用于从函数返回多个
  • 中继器内的 ASP.NET DataGrid

    我有一个有两列的表 CommunityID PersonID 和一个 人员 表 其中包含 除其他外 FirstName LastName 我想为每个社区显示不同的数据网格 每个数据网格仅包含属于该社区的人员 我想在不使用 4 个单独的 Sq
  • Android 打电话时播放声音

    我想在有人接到电话时播放 Android 手机上的音乐 我可以播放音乐 但对方听不到该音乐 如何让对方听音乐 应该怎样编码才能将音乐播放插入麦克风让对方听到 我收到了关于此功能的不同建议 检查这里是可能的 http forums whirl
  • 芹菜失去心跳(on_node_lost)

    我刚刚升级到 celery 3 1 现在我在我的日志中看到了这个 on node lost INFO missed heartbeat from celery queue name for every queue worker in my
  • jsonconvert.deserializeobject 返回 null

    当用户输入城市和街道等地址的 2 个值 目前 时 我试图从谷歌地图获取坐标 来自谷歌地图 api 的 Json 字符串的反序列化遇到问题 必须非常简单 请帮助我关于我所缺少的 这是 json 字符串 http pasted co d9e7c
  • 如何在 Markdown 中为 Pandoc Beamer 幻灯片指定 YAML 元数据?

    我正在尝试使用 YAML 元数据块来指定 Pandoc 的 Markdown 文档中的一些文档属性 我将其转换为 LaTeX Beamer 我在这里阅读了描述 http johnmacfarlane net pandoc README ht
  • 使用 TableAdapter 重新加载数据

    private void UserList Load object sender EventArgs e TODO This line of code loads data into the workOrdersDataSet users
  • 使用 ES6 import 语句时,有没有办法防止项目未定义?

    import foobar1 foobar2 foobor3 typo this key doesn t exist in the module from module file js console log foobar1 foobar2
  • PHP preg_match_all 在长字符串上失败

    这是我的代码 long str repeat a very long string text 100 try changing 100 to 5000 str lt lt
  • 为什么我的汇编输出位于字母位置? (1+1=b)

    我正在使用塔斯姆 这是一个简单的程序 可以读取用户的输入并将两个数字相加 但是 我的输出是根据字母位置显示字母 例如 3 5 h 8 我希望它以整数显示 model small stack 100h data input db 13 10
  • 如何在 Apache 中集成 Clojure Web 应用程序

    Note 鉴于这个OP是大约两年前写的 我不想再问同样的问题 我想知道是否存在分步说明 以便我可以将Noir或其他Clojure Web应用程序集成到Apache中 无论是Jetty Tomcat 或者是其他东西 Django 也有类似的说
  • angular2快速启动仅显示正在加载..而不显示index.html的内容

    第一次使用 angular2 按照以下说明5 分钟快速入门指南 https angular io docs ts latest quickstart html 对于角度 2 一切正常 意味着运行时没有错误npm start npm 启动镜像
  • 在windows中用纯C创建唯一的临时目录

    我想从一些 C 在 Windows 中创建一个唯一的临时目录 代码 不是 C 或 C 我想这样做 以便我可以放置一些温度 目录中的文件 然后在完成后轻松将它们全部删除 通过递归删除目录 我本质上是在寻找与linux相当的东西mkdtemp
  • 从数据库填充组合框

    我的组合框出现错误 My code SqlConnection conn new SqlConnection try conn new SqlConnection Data Source SHARKAWY Initial Catalog B
  • 使用 Flash IDE 测试电影无法从本地主机加载文件

    我只是想知道是否有人可以帮助我解决我的简单但令人沮丧的问题 我创建了一个 SWF 可以从以下位置加载 XML 文件http localhost flash Projects MEL Quiz Quiz bin xml quiz xml ht
  • 在 WKWebView 中启用应用程序缓存

    我知道 iOS WKWebView 不支持离线应用程序缓存 这是在 Safari 中启用的 所以我在 webkit 项目中搜索了负责的代码并发现了这个 WK首选项 void setOfflineApplicationCacheIsEnabl
  • 使用 Wix 工具集安装应用程序的多个实例

    我只需要安装应用程序的多个实例 将它们保存在不同的文件夹中 桌面上没有快捷方式 换句话说 当应用程序已安装在文件夹中时 如果我再次双击 msi 文件 安装程序不应询问我是否要修复或删除我的应用程序 而只是允许安装它在一个新文件夹中 我怎么解
  • Cache-Control s-maxage 标头是否会覆盖浏览器缓存的 Expires 标头?

    我想设置一个遥远的未来过期标头以减少来自各个浏览器的请求 我还想设置 Cache Control s maxage 600 以便代理缓存 和 CDN 每 10 分钟与源重新验证一次新内容 尽管存在带有 s maxage 指令的 Cache
  • 是否可以使用与 Java 中相同的语法在 Groovy 中使用 JavaFX?

    我使用的是jdk1 8 0 25 我正在尝试运行一个 JavaFX 应用程序文件 在该文件下 当名为 HelloWorldMain java 时 可以使用 javac java 编译并运行正常 我将其重命名为 HelloWorldMain