29 votes

Exécuter une seule classe de kotlin avec fonction principale dans Android Studio

Je suis en train d'essayer de se familiariser avec Kotlin à utiliser dans mes applications android. Alors d'abord je tiens à essayer quelques simples kotlin exemples, juste pour se familiariser avec la syntaxe de kotlin.

J'ai fait une classe nommée Main.kt dans mon projet android avec juste la méthode principale.

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

Android studio me montre une kotlin icône à gauche de la méthode main et quand je clique sur cette icône, Il me montre ci-dessous trois option:

1) Exécuter Mainkt

2) Debug Mainkt

3) Exécuter Mainkt avec la couverture

J'ai choisi la première mais il 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 petit problème. Laissez-moi savoir si quelqu'un d'entre vous ont été confrontés à un problème de ce genre et quelle est la solution.

8voto

Pavneet_Singh Points 25397

Android studio (ide) offre REPL(Réel Eval Print Loop) outil pour écrire et exécuter kotlin code.

  1. Ouvrir kotlin REPL comme Tool -> kotlin -> kotlin REPL

enter image description here

  1. Écrivez votre code

enter image description here

  1. Appuyez sur commande + entrée (mac os) pour exécuter votre code(attention à la combinaison de touche sur la plate-forme différente)

Soit écrire du code ou import de la classe

enter image description here

Conseils:

  • Reconstruit le projet une fois que vous modifiez le code source
  • Utilisez la touche flèche pour remonter dans l'histoire

6voto

Maxim Firsoff Points 481
 class Main {
companion object {
    @JvmStatic fun main(args: Array<String>) {
        println("Hello!")
    }
}
 

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

entrez la description de l'image ici

3voto

zsmb13 Points 36441

Vous pouvez créer une bibliothèque Java module où vous pouvez exécuter des non-Android de projets, consultez cette réponse pour les instructions. C'est une Java liés à la question, mais cela fonctionne tout de même avec Kotlin main fonctions de trop. Edit: je ne peux pas obtenir ce droit maintenant.

Vous pouvez également utiliser IntelliJ IDEA à la place qui est une Java/Kotlin/etc. IDE au lieu de un Android one, le community edition est gratuit et prend en charge Kotlin.

Si vous avez juste besoin de courir très simple code, vous pouvez aussi le faire en ligne ici: https://try.kotlinlang.org/

3voto

Jared Rummler Points 661

Comme mentionné dans l'outil de suivi des problèmes, une solution temporaire consiste à ajouter ce qui suit 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

1voto

Henry Points 3697

Ce n'est tout simplement pas possible pour l'instant dans Android Studio 3.0.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X