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

时间:2017-06-29 10:48:08

标签: android android-studio kotlin main

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

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

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

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

1)运行Mainkt

2)Debug 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)

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

16 个答案:

答案 0 :(得分:8)

Android Studio(intellij)提供了REPL(实时评估打印循环)工具来编写和执行kotlin代码。

  1. Tool -> kotlin -> kotlin REPL的身份打开kotlin REPL

enter image description here

  1. 编写代码

enter image description here

  1. 按命令+ Enter(在Mac上)执行代码(请注意不同平台上的按键组合)

编写代码或import

enter image description here

提示:

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

答案 1 :(得分:6)

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

或 只需创建一个主类为“MainKt”的配置。

enter image description here

答案 2 :(得分:3)

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

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

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

答案 3 :(得分: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

答案 4 :(得分:2)

在我的Android Studio中,只需使用main函数打开Kotlin文件,然后在main函数的左侧有一个绿色的“运行”三角形。只需单击该文件即可运行该文件。

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

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

答案 8 :(得分:0)

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

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

dependencies {
    runtimeClasspath files(compileKotlin.destinationDir)
}

答案 9 :(得分:0)

在Android Studio 3.1.3上测试

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

使用这种方法,您可以在同一项目中拥有Java / Kotlin模块和Android模块,还可以将Java / Kotlin模块作为独立项目进行编译和运行。

  1. 在Android Studio中打开您的Android项目。如果您没有,请创建一个。
  2. 点击文件>新建模块。选择 Java库,然后单击下一步
  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中所做的那样)即可。单击应用,然后点击确定

答案 10 :(得分:0)

现在受支持(V 3.2.1)

我刚刚完成了Android Studio的升级,创建了一个新项目 然后,我等到所有建筑物都完工(如果建议您升级某些东西,请接受)

之后,我创建了一个新的Kotlin文件并添加了您的代码,右键单击并选择Run(运行)选项。

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

  

Hello World

     

以退出代码0结束的过程

答案 11 :(得分:0)

  1. 使用gradle创建默认项目
      

    gradle init-> kotlin应用程序

  2. 将项目导入Android Studio
  3. 使用“应用程序”模板创建新的“运行配置”,并将“ app.AppKt”设置为“主类”(请参见build.gradel-> mainClassName)。 enter image description here

  4. 运行! enter image description here

答案 12 :(得分:0)

一种耗时较少的方法是,将Android Studio配置为运行Java程序,然后从该主要方法调用您的Kotlin类:

public class JavaApplication{
  public static void main(String[] args){
     KotlinApplicationKt.main(new String[]{});
  }
}

要配置您的android studio以运行Java应用程序,请执行以下操作:  1.只需添加一个新配置(运行菜单>编辑配置> +图标)  2.选择“应用程序”,然后将主类配置为JavaApplication.class  3.将工作目录设置为项目目录,并将JRE设置为JDK  4.申请并运行!

答案 13 :(得分:0)

这很容易。我看到了与此相关的帖子,因此无法快速跟进。您需要做的唯一区别就是更改配置。因为您要将应用程序编译更新为kotlin类编译。在任何文件夹中创建任何Kotlin文件/类。在Android应用程序的“编辑配置”下,将“部署”选项设置为“无”,将启动值设置为“无”。

enter image description here

答案 14 :(得分:0)

我添加以下内容:

  1. 添加此apply plugin: 'kotlin-android'

  2. 还有

dependencies {
    classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:$your-version' 
}

这可以解决问题。

答案 15 :(得分:-1)

它是如此简单,无需执行任何单独或特定的任务。

只需在Android Studio中安装Kotlin插件即可。

现在,在android studio中创建新项目时,选中kotlin复选框。

您将在活动中找到默认的kotlin代码,如下所示:

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

现在,您可以在Android Studio中使用kotlin进行任何操作;)