加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy – 如何获取依赖项并使其与IntelliJ项目一起使用?

发布时间:2020-12-14 16:22:57 所属栏目:大数据 来源:网络整理
导读:我想在IntelliJ 12中启动一个GroovyFX项目. 但是,我无法让IntelliJ编译并运行以下简单脚本(以最简单的方式重现问题): @Grab(group='org.codehaus.groovyfx',module='groovyfx',version='0.3.1')import groovyx.javafx.GroovyFXprintln GroovyFX.class.name
我想在IntelliJ 12中启动一个GroovyFX项目.
但是,我无法让IntelliJ编译并运行以下简单脚本(以最简单的方式重现问题):

@Grab(group='org.codehaus.groovyfx',module='groovyfx',version='0.3.1')
import groovyx.javafx.GroovyFX
println GroovyFX.class.name

我使用IntelliJ对Grape’s Grab的支持来添加groovyfx作为我的模块的依赖项(jar显示在“外部库”下,编辑器不会抱怨之后缺少类!)但是,当我运行脚本时,它会抛出一个错误:

Groovyc: unable to resolve class groovyx.javafx.GroovyFX

我能够在GroovyConsole中使用这个脚本没有太多问题,并且符合预期……

我尝试抓住另一个随机选择的依赖项(原来是一个Spring库),它直接工作:

@Grab(group='org.springframework',module='spring',version='2.5.6')
import org.springframework.jdbc.core.JdbcTemplate
println JdbcTemplate.class.name

我看不出Spring库应该工作的原因,但不是GroovyFX库!

我甚至仔细检查了GroovyFx库是否已经实际下载了,它应该在哪里(在{user.home} / .groovy / grapes / {group} / {module} / jars /下)

是什么导致这种奇怪而极其令人沮丧的问题?

解决方法

我用groovyConsole(从 groovy-sdk-2.1.0开始)和IntelliJ IDEA 12.0.3测试了你的问题.我得到的唯一例外是:

Caught: java.lang.NoClassDefFoundError: javafx/application/Application
java.lang.NoClassDefFoundError: javafx/application/Application
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
    ... 1 more

这是因为JavaFX运行时(jfxrt.jar)不在类路径中.这可以修复

mvn com.zenjava:javafx-maven-plugin:1.3:fix-classpath

上面的命令取自JavaFX Maven Plugin Wiki.您只需要执行一次.在那次改变之后,groovyConsole和IntelliJ都正常工作.我不得不重新启动groovyConsole,这对IntelliJ来说不是必需的.

有趣的是,我没有在“外部库”下看到GroovyFx-jar.我使用简单的IDEA社区版,没有任何插件.

来自GroovyFX主页的Hello World在IDEA中开箱即用,但在groovyConsole中没有 – 我还得到了“java.lang.ClassNotFoundException:groovyx.javafx.GroovyFX”.我设法让它运行以下代码,但它不是一个好的解决方案,因为它只在第一次运行时工作,然后你必须重新启动groovyConsole:

@GrabConfig(systemClassLoader=true,initContextClassLoader=true)
@Grab(group='org.codehaus.groovyfx',version='0.3.1')
import static groovyx.javafx.GroovyFX.start

start {
    stage(title: 'GroovyFX Hello World',visible: true) {
        scene(fill: BLACK,width: 500,height: 250) {
            hbox(padding: 60) {
                text(text: 'Groovy',font: '80pt sanserif') {
                    fill linearGradient(endX: 0,stops: [PALEGREEN,SEAGREEN])
                }
                text(text: 'FX',stops: [CYAN,DODGERBLUE])
                    effect dropShadow(color: DODGERBLUE,radius: 25,spread: 0.25)
                }
            }
        }
    }
}

我不确定,但我认为原因是这个错误here.应该在Groovy 2.2中修复,我们会看到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读