web-dev-qa-db-fra.com

Exécuter une seule classe de kotlin avec la fonction principale dans le studio Android

J'essaie de me familiariser avec Kotlin pour l'utiliser dans mes applications Android. Je voudrais donc commencer par essayer quelques exemples simples de kotlin, juste pour me familiariser avec la syntaxe de kotlin.

J'ai créé une classe nommée Main.kt dans mon projet Android avec uniquement la méthode principale.

fun main(args: Array<String>) {
println("Hello World"); }

Le studio Android me montre une icône kotlin à gauche de la méthode principale et lorsque je clique sur cette icône, elle me montre ci-dessous trois options:

1) Exécuter Mainkt

2) Debug Mainkt

3) Exécuter Mainkt avec une couverture

J'ai choisi le premier mais ça me jette 

Exception in thread "main" Java.lang.ClassNotFoundException: com.vikalp.kotlin.MainKt
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:381)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:331)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Class.Java:264)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.Java:107)

Je suis coincé avec un si petit problème. Faites-moi savoir si quelqu'un de vous a été confronté à un problème comme celui-ci et quelle est la solution.

26
Vikalp

Le studio Android (intellij) fournit l'outil REPL (Real Eval Print Loop) pour écrire et exécuter du code kotlin.

  1. Ouvrez kotlin REPL en tant que Tool -> kotlin -> kotlin REPL

 enter image description here

  1. Écrivez votre code 

 enter image description here

  1. Appuyez sur commande + entrée (sur mac) pour exécuter votre code (faites attention à la combinaison de touches sur différentes plateformes) 

Écrire du code ou import la classe

 enter image description here

Conseils: 

  • Reconstruit le projet une fois que vous avez modifié le code source
  • Utilisez les flèches pour revenir en arrière dans l'histoire
3
Pavneet_Singh

Comme indiqué dans le suivi des problèmes, une solution temporaire consiste à ajouter les éléments suivants au script racine build.gradle:

subprojects { subProject ->
    afterEvaluate {
        if (subProject.plugins.hasPlugin("kotlin") && subProject.plugins.hasPlugin("Java-library")) {
            subProject.kotlin.copyClassesToJavaOutput = true
            subProject.jar.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
        }
    }
}

Voir: https://issuetracker.google.com/issues/68021152#comment12

3
Jared Rummler

Vous pouvez créer un nouveau module de bibliothèque Java dans lequel vous pouvez exécuter des projets non Android, voir cette réponse pour obtenir des instructions. Ceci est une question liée à Java, mais elle devrait également fonctionner avec les fonctions Kotlin main. Edit: Je n'arrive pas à faire fonctionner ça maintenant.

Vous pouvez également utiliser IntelliJ IDEA à la place de Java/Kotlin/etc. IDE au lieu d'une version Android, l'édition communautaire est gratuite et prend en charge Kotlin.

Si vous avez juste besoin d’exécuter du code très simple, vous pouvez également le faire en ligne ici: https://try.kotlinlang.org/

3
zsmb13
class Main {
companion object {
    @JvmStatic fun main(args: Array<String>) {
        println("Hello!")
    }
}

ou Créez simplement une configuration avec la classe principale en tant que "MainKt".

 enter image description here

2
Maxim Firsoff

Peut-être que cette méthode a fonctionné utilisez gradle-3.3 , au moins cela a fonctionné pour moi.

1
xwang

Ce n'est tout simplement pas possible pour le moment dans Android Studio 3.0. 

Un bogue a déjà été enregistré pour cela: https://issuetracker.google.com/issues/68021152

1
Henry

J'ai rencontré le même problème et une solution de contournement consiste à exécuter votre code dans une classe de test sous le dossier test, puis à l'aide du bouton droit de la souris sur Run {your test class}

C'est assez si vous voulez seulement jouer avec Kotlin.

1
Miguel Garcia

C'est si simple, pas besoin de faire une tâche distincte ou spécifique.

Il suffit d'installer le plugin Kotlin dans Android Studio.

Maintenant, au moment de créer un nouveau projet dans Android Studio, cochez la case Kotlin.

Vous trouverez le code kotlin par défaut dans votre activité comme ci-dessous: 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Maintenant, vous pouvez faire ce que vous voulez avec Kotlin dans Android Studio;)

0
Jaimin Modi
  1. Créer un projet par défaut avec gradle

    gradle init -> application-kotlin

  2. Importer le projet dans Android Studio
  3. Créez une nouvelle "configuration d'exécution" avec un modèle "Application" et définissez "app.AppKt" en tant que "classe principale" (voir build.gradel-> mainClassName). enter image description here

  4. Courir! enter image description here

Il est supporté maintenant (V 3.2.1) 

Je viens de terminer la mise à niveau de mon studio Android, j'ai créé un nouveau projet J'ai ensuite attendu que tout le bâtiment soit terminé (s'il vous est conseillé de mettre à niveau quelque chose, veuillez accepter). 

Après cela, j'ai créé un nouveau fichier Kotlin et ajouté votre code, faites un clic droit et choisissez l'option Exécuter et c'est tout.

Je peux voir ce qui suit dans la console

Bonjour le monde

Processus terminé avec le code de sortie 0

0
A.Alqadomi

Le moyen le plus simple est de créer un nouveau module de bibliothèque Java comme this et de le configurer pour Kotlin.

Vous devez également ajouter ceci dans votre build.gradle du module importé:

dependencies {
    runtimeClasspath files(compileKotlin.destinationDir)
}
0
Shahzad Akram