2017-01-06 1 views
1

J'essaie actuellement de combiner les technologies suivantes:Comment mettre en place une application gluons avec Kotlin et Tornado FX

  • gluons (Mobile)
  • Gradle (dépendance de gluons, car ils comptent sur elle)
  • Kotlin (parce que c'est une langue belle que je veux plonger dans)
  • Tornado FX (je suppose que c'est pour JavaFX, ce qui est Anko pour Android)

de la délivrance e est, que je suis relativement nouveau à Intellij-IDEA et ai des problèmes en l'installant correctement, bien que je le pense, que le fichier build.gradle était assez approprié.

Voici ce que mon build.gradle semble jusqu'à présent:

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' 
    } 
} 

I à bail réussi à arrêter l'IDE pour se plaindre de Kotlin. Je me suis converti une simple classe d'application pour ressembler à ceci:

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() 
    } 
} 

Mais maintenant, je suis coincé, parce que la dépendance à Tornado FX n'est pas résolu correctement. Je voulais créer un View et a commencé avec

package eu.dzim.test 

import tornadofx.View 
import tornadofx.borderpane 

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

    } 
} 

Mais les importations comme import tornadofx.View ne sont jamais résolus.

Y at-il un problème, parce que Tornado semble utiliser Kotlin 1.0.5, alors que je veux utiliser 1.0.6? (Bien que cela n'a pas d'effet, si je le change, en ce qui concerne le (non encore utilisée, parce que « non résolue ») View ...)

Cordialement, Daniel

+0

J'ai essayé votre fichier de compilation exacte sans modifications, et j'ai pu importer dans IDEA sans problème. Pouvez-vous essayer d'exécuter "gradle build" à partir de la ligne de commande pour voir si c'est simplement un problème IDEA ou autre chose? –

+0

La chose amusante est: à partir de la console à la fois construire et a commencé. Mais l'IDE a insisté, il n'était pas correctement configuré et ne pouvait pas utiliser Kotlin et Tornado out-of-the-box ... – dzim

+0

@edvin donc vous avez d'autres plugins, bibliothèques, etc.déjà mis en place avant l'importation? J'ai commencé avec une nouvelle installation d'IDEA et j'avais besoin de convertir le Java original en Kotlin. Et là les problèmes ont commencé. – dzim

Répondre

1

On dirait que quelque chose a mal tourné quand IDEA a analysé la Construire le fichier et générer des métadonnées invalides, probablement en raison de changements incrémentiels à votre config de construction. Pour régénérer les métadonnées, procédez comme suit

  • Fermer IDEA
  • Retirez le dossier .idea dans le dossier du projet
  • importer le projet

Cette fois les métadonnées serait généré à partir du déjà compléter le fichier de construction et il devrait être configuré correctement.

Notez également que le plugin Kotlin compilera par défaut les sources Kotlin dans src/main/kotlin. Modifiez le dossier source ou konfigure le plugin Kotlin pour compiler des sources en src/main/java:

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