1

現在、次のテクノロジーを組み合わせようとしています。

  • グルオン(モバイル)
  • Gradle (Gluon に依存しているため、Gluon に依存)
  • Kotlin (飛び込みたい素敵な言語だから)
  • Tornado FX (JavaFX 用だと思います。Anko は Android 用です)

問題は、私がIntellij-IDEAに比較的慣れておらず、適切に設定するのに問題があることですが、build.gradleファイルは十分に適切でした.

これが私build.gradleのこれまでの外観です。

buildscript {
    ext.kotlin_version = '1.0.6'

    repositories {
        jcenter()
        mavenCentral()
    }

    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.2.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'org.javafxports.jfxmobile'
apply plugin: 'kotlin'
// apply plugin: 'com.android.application'
// apply plugin: 'kotlin-android'

repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
}

mainClassName = 'eu.dzim.test.Main'

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    // compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile 'com.gluonhq:charm:4.2.0'
    compile 'no.tornado:tornadofx:1.5.9'
    compile 'no.tornado:tornadofx-controls:1.0.4'
}

jfxmobile {
    downConfig {
        version = '3.1.0'
        // Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
        plugins 'display', 'lifecycle', 'statusbar', 'storage'
    }
    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
}

私は少なくともIDEを停止して、Kotlinについて不平を言うことができました。単純なアプリケーション クラスを次のように変換しました。

package eu.dzim.test

import com.gluonhq.charm.down.Platform
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.layout.BorderPane
import javafx.stage.Screen
import javafx.stage.Stage

/**
 * Created by daniel on 06.01.17.
 */
class Main : Application() {

    @Throws(Exception::class)
    override fun start(stage: Stage) {

        var width = -1.0
        var height = -1.0
        if (Platform.isDesktop()) {
            width = 480.0
            height = 640.0
            stage.title = "Test"
        }
        val primaryScreen = Screen.getPrimary()
        val visualBounds = primaryScreen.visualBounds
        if (width < 0 || height < 0) {
            width = visualBounds.width
            height = visualBounds.height
        }

        val root = BorderPane()

        val scene = Scene(root, width, height)

        stage.scene = scene

        stage.show()
    }
}

しかし、Tornado FX への依存関係が適切に解決されていないため、行き詰まっています。を作成したくてView

package eu.dzim.test

import tornadofx.View
import tornadofx.borderpane

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

    }
}

しかし、インポートはimport tornadofx.View決して解決されません。

Tornado は Kotlin を使用し1.0.5ているようですが、使用したいので問題はあります1.0.6か? (これは影響はありませんが、変更すると、(「未解決」のため、まだ使用されていません)に関してView...)

よろしく、ダニエル

4

1 に答える 1

1

IDEA がビルド ファイルを分析し、無効なメタデータを生成したときに、何か問題が発生したようです。これはおそらく、ビルド構成への増分変更が原因です。メタデータを再生成するには、次の手順を実行します

  • アイデアを閉じる
  • プロジェクト フォルダー内の .idea フォルダーを削除します。
  • プロジェクトをインポートする

今回は、既に完成したビルド ファイルからメタデータが生成されるため、正しく設定する必要があります。

また、Kotlin プラグインはデフォルトで Kotlin ソースを にコンパイルすることにも注意してくださいsrc/main/kotlin。ソース フォルダーを変更するか、Kotlin プラグインを構成してソースをコンパイルしますsrc/main/java

sourceSets {
    main.kotlin.srcDirs += 'src/main/java'
}
于 2017-01-09T08:14:51.467 に答える