是否可以使用与 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? 的相关文章

  • JavaFX 的 Swing 计时器替代方案以及线程管理差异

    使用 JavaFX 的 Swing 计时器是否安全 或者 Swing 有特殊的替代方案吗 JavaFX 和 Swing 的线程管理有什么区别 事实上我很想知道相当于摇摆计时器 SwingUtilities invokeLater and i
  • 带有 Grails 的 AOP

    我想在我的 Grails 项目中创建自定义日志记录注释 My code class MyService AuditLog def method1 println method1 called method2 AuditLog def met
  • FXML load() 期间出现 JavaFX IllegalAccessException

    我有一个由以下代码调用的对话框窗口 DialogController是使用模式对话框窗口的辅助类 它主要将控制器引用与其窗口捆绑在一起 void handleServicesEdit ActionEvent event throws IOE
  • Groovy 错误地使用了封闭类的构造函数?

    Given static class Question stuff List
  • 如何在 Mulesoft 中将睡眠设置为流程而不丢失消息负载

    我想插入脚本来延迟 Mulesoft 中的处理流程 我尝试在 groovy 中插入脚本 但丢失了消息有效负载 因此当我必须获取消息有效负载时 收到了空指针 我怎样才能不丢失消息有效负载 Thanks 如果您正在使用Groovy流程中的组件
  • 如何重定向 Groovy 脚本的输出?

    我想知道是否有任何方法可以更改我从 Java 代码执行的 groovy 脚本的默认输出 System out 这是Java代码 public void exec File file OutputStream output throws Ex
  • JavaFX 中 ImageView 的顺序转换

    我已经看过了如何在 javafx 2 1 中等待转换结束 https stackoverflow com questions 11188018 how to wait for a transition to end in javafx 2
  • 遍历多行字符串

    我得到一些数据 def data some useless text n even more n finally interesting text 我怎样才能得到其中 有趣的部分 所以基本上所有行都不是以 开头的 Groovy 的一种选择是
  • Groovy 安装 HTTPBuilder 现在 Codehaus 关闭了?

    我是一个 groovy n00b 并尝试使用 http builder 但网络上的所有示例都引用相同的内容 Grab声明不起作用 我认为这是因为 codehaus org 不再托管常规内容 我尝试过从以下位置下载源代码github http
  • 在 CSS 中设置 TableView 样式 (JavaFX)

    如何在 TableView 中设置 THIS 点的样式 我的 CSS 代码如下所示 Empty Stylesheet file root fx background color 262626 table view fx background
  • 如何使 AnchorPane 大小响应最大化的屏幕视图

    我不知道什么是灰色地带以及如何扩展我的Anchorpane到整个屏幕Image https i stack imgur com m5HqA png 不是未最大化的视图是这样的image2 https i stack imgur com 14
  • 如何在 Groovy 中的 JSON Converter 方法中保留字母大小写?

    我正在尝试将 groovy 对象解析为 JSON 属性名称不遵循正确的驼峰式大小写形式 class Client String Name Date Birthdate 当我使用这个时 Client client new Client Nam
  • 在 Jar 中为 Gluon Scene Builder 11.00 创建自定义控件

    我想在可执行 jar 文件中创建自定义控件 然后在 Gluon Scene Builder 11 00 中使用 我需要知道如何做到这一点 我尝试了几种形式 但在场景生成器中导入 jar 时我的控件没有出现 我正在使用 IntelliJ Co
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • 如何将任务添加到 gradle 中的主要“构建”任务

    当我尝试使用以下代码将任务添加到主构建任务时 rootProject tasks getByName build dependsOn mytask 当我跑步时它抱怨gradle w build输出 Where Build file line
  • 无法解析符号“javafx.scene.web”

    使用Intellij 2021 3 2 JavaFX版本 11 0 2 1 我正在尝试将 JavaFX WebView 添加到我的应用程序中 我的导入语句无法编译 import javafx scene web 编译错误 java 找不到符
  • 如何根据 JavaFX 8 中的特定祖先获取节点边界?

    我在 AnchorPane 中添加了一个图表 我想获取其绘图的范围 图表 我用青色标记 这样我就可以在它上面添加一些文本 但我应该根据它的祖先知道它的确切边界 如果我手动执行此操作 则在调整大小等时更改节点的填充大小时 我可能会失败 imp
  • JavaFX 如何在不改变线宽的情况下缩放路径的坐标?

    我目前正在制作具有缩放和平移功能的阶梯折线图 由于我需要处理的数据量非常大 因此每次调用layoutPlotChildren 时 我无法重新创建步骤线的整个路径 所以我的想法是创建一次路径元素 然后在缩放和平移事件时对其进行转换 到目前为止
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList

随机推荐

  • 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