Задать вопрос
Peckin
@Peckin
Интересуюсь программированием

При запуске kotlin tornadofx проекта появляется Error running 'MainView'?

Я новичок в kotlin. В Intellij Idea попытался создать стандартный проект с плагином TornadoFX, поначалу Hello World запустился, но на следующий день появилась ошибка:
Error running 'MainView': Argument for @NotNull parameter 'mainClassName' of com/intellij/execution/util/JavaParametersUtil.isClassInProductionSources must not be null

Помогите понять в чем проблема, где у меня mainClassName равен нулю? И почему эта ошибка не появилась сразу. Заранее спасибо!

MainView.kt

package com.example.demo.view

import com.example.demo.app.Styles
import tornadofx.*

class MainView : View("Hello Tornado") {
    override val root = hbox {
        label(title) {
            addClass(Styles.heading)
        }
    }
}


build.gradle

buildscript {
    ext.kotlin_version = '1.2.51'

    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: "kotlin"
apply plugin: 'application'

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

repositories {
    mavenLocal()
    mavenCentral()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
}

dependencies {
    compile 'no.tornado:tornadofx:1.7.14'
    testCompile 'junit:junit:4.12'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

mainClassName = 'com.example.demo.app.MyApp'

jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                'Main-Class': 'com.example.demo.app.MyApp'
        )
    }
    from(configurations.compile.collect { entry -> zipTree(entry) }) {
        exclude 'META-INF/MANIFEST.MF'
        exclude 'META-INF/*.SF'
        exclude 'META-INF/*.DSA'
        exclude 'META-INF/*.RSA'
    }
}


MyView.kt

package com.example.demo.view

import tornadofx.*

class MyView : View("My View") {
    override val root = borderpane {

    }
}


MyApp.kt

package com.example.demo.app

import com.example.demo.view.MainView
import tornadofx.App

class MyApp: App(MainView::class, Styles::class)


Styles.kt

package com.example.demo.app

import javafx.scene.text.FontWeight
import tornadofx.Stylesheet
import tornadofx.box
import tornadofx.cssclass
import tornadofx.px

class Styles : Stylesheet() {
    companion object {
        val heading by cssclass()
    }

    init {
        label and heading {
            padding = box(100.px)
            fontSize = 20.px
            fontWeight = FontWeight.BOLD

        }
    }
}
  • Вопрос задан
  • 695 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@oldd
Программист, архитектор, тимлидер
Поставьте java Liberica, там есть встроенный javafx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы