在android studio中运行带有main函数的单kotlin类

问题描述 投票:29回答:12

我试图熟悉Kotlin在我的Android应用程序中使用。首先,我想尝试一些简单的kotlin示例,只是为了熟悉kotlin的语法。

我用android方法在我的android项目中创建了一个名为Main.kt的类。

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

Android工作室向我展示了main方法左侧的kotlin图标,当我点击此图标时,它显示以下三个选项:

1)运行Mainkt

2)调试Mainkt

3)运行Mainkt覆盖范围

我选择了第一个,但它抛出了我

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)

我遇到了这么小的问题。如果你们中的任何人遇到过这样的问题以及解决方案是什么,请告诉我。

android android-studio kotlin main
12个回答
9
投票

Android studio(intellij)提供REPL(Real Eval Print Loop)工具来编写和执行kotlin代码。

  1. 打开kotlin REPL作为Tool -> kotlin -> kotlin REPL

enter image description here

  1. 写下你的代码

enter image description here

  1. 按命令+输入(在mac上)执行你的代码(注意不同平台上的键组合)

写代码或import这个类

enter image description here

提示:

  • 更改源代码后重新生成项目
  • 使用箭头键返回历史记录

0
投票

它现在得到支持(V 3.2.1)

我刚刚升级了我的Android工作室,创建了一个新项目,然后等到所有建筑物完工(如果你被建议升级的东西请接受)

之后我创建了一个新的Kotlin文件并添加了你的代码,右键单击并选择Run选项就是这样。

我可以在控制台中看到以下内容

你好,世界

进程以退出代码0结束


0
投票
  1. 使用gradle创建默认项目 gradle init - > kotlin-application
  2. 将项目导入Android Studio
  3. 使用“应用程序”模板创建新的“运行配置”,并将“app.AppKt”设置为“主类”(请参阅​​build.gradel-> mainClassName)。 enter image description here
  4. 跑! enter image description here

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

或者只需将主类创建为“MainKt”即可。

enter image description here


3
投票

您可以创建一个新的Java库模块,您可以在其中运行非Android项目,有关说明,请参阅this answer。这是一个与Java相关的问题,但它也应该与Kotlin main函数一样。编辑:我现在无法正常工作。

您也可以使用IntelliJ IDEA而不是Java / Kotlin / etc。 IDE而不是Android版,社区版是免费的,支持Kotlin。

如果你只需要运行非常简单的代码,你也可以在这里在线完成:https://try.kotlinlang.org/


3
投票

如问题跟踪器中所述,临时解决方法是将以下内容添加到根build.gradle脚本中:

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

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


1
投票

这在Android Studio 3.0中是不可能的。

已经提交了一个错误:https://issuetracker.google.com/issues/68021152


1
投票

我遇到了同样的问题,解决方法是在test文件夹下的测试类中运行代码,然后右键单击Run {your test class}

如果你只想玩Kotlin就足够了。


1
投票

也许这种方法适用于use gradle-3.3,它至少对我有用。


1
投票

在Android Studio 3.1.3上测试过

请注意,这是我的其他answer的编辑版本。

使用此方法,您可以在同一个项目中使用Java / Kotlin模块和Android模块,还可以将Java / Kotlin模块编译和运行为独立项目。

  1. 在Android Studio中打开您的Android项目。如果您没有,请创建一个。
  2. 单击文件>新模块。选择Java Library,然后单击Next。
  3. 填写包名称等,然后单击“完成”。您现在应该在Android项目中看到一个Java模块。
  4. 将Java / Kotlin代码添加到刚刚创建的Java模块中。
  5. 单击运行按钮左侧的下拉菜单。单击编辑配置...
  6. 在新窗口中,单击窗口左上角的加号,然后选择“应用程序”
  7. 应该出现一个新的应用程序配置,输入详细信息,例如模块的主类和类路径。
  8. 单击确定。
  9. 接下来我们需要添加Kotlin插件。将以下代码添加到项目级别build.gradle(要添加的行由>>>表示): buildscript { >>> ext.kotlin_version = '1.2.51' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3' >>> classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } ...
  10. 将以下代码添加到模块级别build.gradle(要添加的行由>>>表示): apply plugin: 'java-library' >>> apply plugin: 'kotlin' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) >>> implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" >>> runtimeClasspath files(compileKotlin.destinationDir) } ...

现在,如果单击“运行”,则应编译并运行Java / Kotlin模块。

如果您收到错误Error: Could not find or load main class...,只需再次输入您的主类(如您在步骤7中所做的那样),即使该字段已填写。单击“应用”,然后单击“确定”。


0
投票

最简单的方法是创建一个新的Java库模块,如this,并为Kotlin配置它。

您还必须在导入模块的build.gradle中添加它:

dependencies {
    runtimeClasspath files(compileKotlin.destinationDir)
}
© www.soinside.com 2019 - 2024. All rights reserved.