Kotlin:运行Hello程序时得到ClassNotFoundException

package com.example.manish.myapplication import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } fun main(arg : Array<String>){ print("HI") } 

logcat的:

 Exception in thread "main" java.lang.ClassNotFoundException: com.example.manish.myapplication.MainActivityKt 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 Studio和Kotlin互操作中的一个已知问题。

当您尝试从非Android(例如纯Java + Kotlin)模块运行Kotlin类时,它不会将编译Kotlin类的单独目录添加到类路径中。

解决方法是将这些行添加到您的模块的build.gradle

 dependencies { runtimeClasspath files(compileKotlin.destinationDir) } 

这将main来源集。 为了做测试,分别使用testRuntimeClasspathcompileTestKotlin

这是Android应用程序还是常规应用程序? 我们不能在Android应用程序中有一个主要的功能; 它必须是一个普通的桌面项目。

但我不知道为什么:)