Gradle Compilation在Linux上找不到tornadofx

时间:2017-08-08 17:47:35

标签: gradle javafx kotlin tornadofx

我正在尝试使用gradle编译kotlin应用程序。该应用程序使用tornadofx(kotlin版本的javafx)。

build.gradle中,我有:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile 'no.tornado:tornadofx:1.7.8'
    compile 'com.squareup.moshi:moshi:1.5.0'
    compile 'com.squareup.moshi:moshi-kotlin:1.5.0'

    // Required for local unit tests (JUnit 4 framework)
    testCompile 'junit:junit:4.12'
}

MyApp.kt我有:

import javafx.application.Application
import tornadofx.App

当我在Windows 10上使用gradle clean build.\gradlew clean build编译此项目时,它会编译并完美运行。

当我在Ubuntu Linux上编译这个项目时,我收到一页错误消息,包括:

...

e: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
    class tornadofx.UIComponent, unresolved supertypes: javafx.event.EventTarget
    class tornadofx.App, unresolved supertypes: javafx.application.Application

...

e: /home/al/project/app/src/pcUi/MyApp.kt: (3, 8): Unresolved reference: javafx
e: /home/al/project/app/src/pcUi/MyApp.kt: (12, 5): Unresolved reference: Application

...

虽然如果我通过干净的设置执行此操作,但gradle输出还包括:

Download https://jcenter.bintray.com/no/tornado/tornadofx/1.7.8/tornadofx-1.7.8.pom
Download https://jcenter.bintray.com/com/squareup/moshi/moshi/1.5.0/moshi-1.5.0.pom
Download https://jcenter.bintray.com/com/squareup/moshi/moshi-parent/1.5.0/moshi-parent-1.5.0.pom
Download https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.5.0/moshi-kotlin-1.5.0.pom
Download https://jcenter.bintray.com/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.pom
Download https://jcenter.bintray.com/org/glassfish/json/1.0.4/json-1.0.4.pom
Download https://jcenter.bintray.com/net/java/jvnet-parent/3/jvnet-parent-3.pom
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.1.3/kotlin-stdlib-jre8-1.1.3.pom
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.1.3/kotlin-reflect-1.1.3.pom
Download https://jcenter.bintray.com/com/squareup/okio/okio/1.13.0/okio-1.13.0.pom
Download https://jcenter.bintray.com/com/squareup/okio/okio-parent/1.13.0/okio-parent-1.13.0.pom
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.1.3/kotlin-stdlib-jre7-1.1.3.pom
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.1.3/kotlin-stdlib-1.1.3.pom
Download https://jcenter.bintray.com/no/tornado/tornadofx/1.7.8/tornadofx-1.7.8.jar
Download https://jcenter.bintray.com/com/squareup/moshi/moshi/1.5.0/moshi-1.5.0.jar
Download https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.5.0/moshi-kotlin-1.5.0.jar
Download https://jcenter.bintray.com/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.1.3/kotlin-stdlib-jre8-1.1.3.jar
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.1.3/kotlin-reflect-1.1.3.jar
Download https://jcenter.bintray.com/com/squareup/okio/okio/1.13.0/okio-1.13.0.jar
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.1.3/kotlin-stdlib-jre7-1.1.3.jar
Download https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.1.3/kotlin-stdlib-1.1.3.jar

这对我来说没有意义,因为它正确地下载了依赖项(在Linux和Windows上),但之后只能在Windows而不是Linux上成功编译。我无法弄清楚发生了什么,所以有人可以提供任何建议吗?

2 个答案:

答案 0 :(得分:3)

请参阅错误消息:

e: /home/al/project/app/src/pcUi/MyApp.kt: (3, 8): Unresolved reference: javafx e: /home/al/project/app/src/pcUi/MyApp.kt: (12, 5): Unresolved reference: Application

好像你没有在Ubuntu上正确设置JDK。 JavaFX不再是OpenJDK的一部分,您必须手动安装它:https://packages.qa.debian.org/o/openjfx.html

修改:请参阅https://stackoverflow.com/a/43301246/4697327。您可能正在使用包含JavaFX的Windows上的Oracle JDK。

答案 1 :(得分:0)

为了快速在我的项目中重新包含 JavaFX,我修改了我的 build.grade 文件并让它同步。

plugins {
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

repositories {
    mavenCentral()
}

javafx {
    version = "15.0.1"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}