开发者社区> 问答> 正文

Groovy+JavaFX程序,Gradle无法编译,但在IDE可以直接运行?报错

一个JavaFX8程序,最开始用Java开发,现在往Groovy上转,现在Java代码和Groovy代码都有。

(1)一开始继承关系只有Groovy类继承Java类,:compileJava没有问题,:compileGroovy失败,提示Execution failed for task ':compileGroovy'.
> Unable to load class xxx.XXXXX due to missing dependency javafx/beans/property/ObjectProperty

编译java时候能找到javafx相关类,编译groovy却找不到

(2)后来将那个报错的类变成Groovy类以后,就变成Groovy集成Java,Java又继承Groovy这样,Gradle在编译Java时提示找不到用Groovy写的父类(这是肯定的)。

(3)无论是上面哪一种情况,在IDEA里直接右键运行Main class都能直接跑起来。

刚刚开始接触groovy和gradle,希望高手帮忙解答

展开
收起
爱吃鱼的程序员 2020-06-14 19:05:55 678 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    已解决。需要在build.gradle中加入以下内容(或其他等价写法)。
    configurations{providedCompile}

    dependencies{
       providedCompilefiles("${System.env['JAVA_HOME']}/jre/lib/ext/jfxrt.jar")
    }

    sourceSets{
       main{
           compileClasspath+=configurations.providedCompile
       }
       test{
           compileClasspath+=configurations.providedCompile
           runtimeClasspath+=configurations.providedCompile
       }
    }

    javafx应该不包含完整的jre的类包,缺少bean反射这块的吧,是jre的简单版的,可能会导致groovy用到的一些类找不见并不是你说的这样,需要把jfxrt.jar加入到dependencies里才行,可能groovyc的类路径默认不包含rt.jar以外的内容
    2020-06-14 19:06:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
D2前端工程下一站 IDE ——上坡&吭头 立即下载
D2前端工程下一站 IDE 立即下载
低代码开发师(初级)实战教程 立即下载