[英]TornadoFX not finding JavaFx
I'm trying my first first app with TornadoFx , so I started with this code:我正在使用TornadoFx尝试我的第一个应用程序,所以我从以下代码开始:
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但显然它充满了错误,并且无法找到 JavaFX
My gradle.build
is:我的
gradle.build
是:
// 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
}
Maybe you're using OpenJDK, which doesn't have JavaFX by default?也许您正在使用默认情况下没有 JavaFX 的 OpenJDK? I highly recommend that you install Oracle JDK 8.
我强烈建议您安装 Oracle JDK 8。
Your code is using some heavily outdated syntax.您的代码使用了一些严重过时的语法。 As you're a new user, I suspect we have some outdated code samples lying around - could you tell me where you found these examples?
由于您是新用户,我怀疑我们有一些过时的代码示例 - 您能告诉我您在哪里找到这些示例吗?
This is how it should be written now:现在应该这样写:
class MyView : View() {
override val root = vbox {
button("Press me")
label("Waiting")
}
}
This is an alternate option, I just wrote it as answer in case some one interested about it.这是另一种选择,我只是将其写为答案,以防有人对此感兴趣。 The below code is now running with me using
command line
with MS VS Code
:下面的代码现在与我一起使用
command line
和MS VS Code
:
main.kt
: main.kt
:
import javafx.*
import javafx.application.Application
import javafx.scene.control.Button
import javafx.scene.layout.VBox
import tornadofx.*
import javafx.scene.control.Label
class MyApp: App(MyView::class)
class MyView : View() {
override val root = vbox {
button("Press me")
label("Waiting")
}
}
fun main(args: Array<String>) {
Application.launch(MyApp::class.java, *args)
}
build.gradle
: build.gradle
:
// 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': 'MainKt', "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
}
But at Intellij IDEA still full of errors as below:但是在 Intellij IDEA 中仍然充满错误,如下所示:
Referring to this It worked with Intellij Idea by adding this plugin:参考这个它通过添加这个插件与 Intellij Idea 一起工作:
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!!更奇怪的是,这个代码只需要一次,之后可以删除,没有任何错误,可能是在某处兑现了!!
ver gradle 6.4 ver kotlin 1.3.72 ver tornadofx 1.7.20 ver JDK 14版本 gradle 6.4 版本 kotlin 1.3.72 版本 tornadofx 1.7.20 版本 JDK 14
build.gradle add build.gradle 添加
plugins {
id 'org.openjfx.javafxplugin' version '0.0.8'
}
javafx {
version = "14"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.