Search code examples
javatornadofx

TornadoFX not finding JavaFx


I'm trying my first first app with TornadoFx, so I started with this code:

package no.tornado.fxsample.workspace

import javafx.application.Application
import tornadofx.*

fun main(args: Array<String>) = launch<MyApp>(args)

class MyApp: App(MyView::class)

class MyView: View() {
    override val root = VBox()
    init {
        with(root) {
        this += Button("Press Me")
        this += Label("Waiting")
        }
    }
}

but apparently it is full of errors, and not able to find JavaFX

My gradle.build is:

// set up the kotlin-gradle plugin
buildscript {
    ext.kotlin_version = '1.1.60'
    repositories {
       mavenLocal()    //    mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

// apply the kotlin-gradle plugin
apply plugin: "kotlin"

// add kotlin-stdlib dependencies.
repositories {
    mavenLocal()  // mavenCentral()
}

dependencies {
    //dependencies from a remote repositor
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "no.tornado:tornadofx:1.7.12"
}

jar {
    manifest {
        //Define mainClassName as: '[your_namespace].[your_arctifact]Kt'
        attributes ('Main-Class': 'MyAppKt', "Implementation-Title": "Gradle",
                   "Implementation-Version": 1)
    }
    // NEW LINE HERE !!!
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

sourceSets {
    main.kotlin.srcDirs += 'src/kotlin'
    main.resources.srcDirs += 'src/resources'
}

kotlin {
    experimental.coroutines 'enable'
}

compileKotlin {
    kotlinOptions.jvmTarget= 1.8  // optional, Minimum jvmTarget of 1.8 needed since Kotlin 1.1
    kotlinOptions.suppressWarnings = true
}

enter image description here


Solution

  • Referring to this It worked with Intellij Idea by adding this plugin:

    apply from: "http://dl.bintray.com/content/shemnon/javafx-gradle/8.1.1/javafx.plugin"
    

    Unfortunately this plugin is not maintained any more :(

    More strange also, is this code required only once, it can be deleted after that, without having any error, may be it is cashed somewhere!!

    enter image description here