【问题标题】:Kotlin - IntelliJ Project SetupKotlin - IntelliJ 项目设置
【发布时间】:2015-06-13 23:14:42
【问题描述】:

我想使用 IntelliJ IDE 使用 Kotlin 为 JVM 启动一个新项目,但我无法获得使其工作的配置。我试图关注this tutorial,但在那之后没有成功(“运行'_DefaultPackage'”选项甚至从未出现过),我开始尝试直觉应该做什么而没有成功。 到目前为止(重复)发生了什么:

  • 我创建了一个新项目,选择“Kotlin - JVM”作为项目类型。
  • 我在第二页点击了 Kotlin 运行时的“创建...”按钮,并选择了“复制到:lib”。
  • 我点击“完成”,创建的项目有一个与我的项目同名的模块。没有默认源文件或任何配置。
  • 我创建了一个名为“app.kt”的 Kotlin 文件(我也尝试过其他名称,例如“Main.kt”),并将以下源代码放入:
fun main(args: Array<String>){
    println("Hello world!")
}
  • 我右键单击代码编辑器和左窗格中的文件,找到教程中提到的“运行'_DefaultPackage'”选项,但都找不到。
  • 我创建了一个新的 Kotlin 配置,它要求我放入一个“主类”。看到这里,我把代码改成:
public class Main {
    fun main(args: Array<String>) {
        println("Hello world!")
    }
}
  • 我编辑我的配置并将主类设置为“Main”,然后运行配置。它失败并出现以下错误:“错误运行:在类'Main'中找不到函数'main'。

我错过了什么?

【问题讨论】:

  • 您使用的是什么版本的 IntelliJ IDEA?你有 src 文件夹吗?你在里面创建了 Kotlin 文件吗?
  • IntelliJ 版本 14.1.3。我有一个默认创建的名为“src”的源文件夹,其中有一个名为 Main 的 Kotlin 类文件。
  • 您能否展示一下您的项目布局的屏幕截图,或者更好,请将示例发给我?我很好奇为什么会这样。
  • 查看:stackoverflow.com/a/34513057/3679676 了解运行 Kotlin 类的背景信息,它将帮助您诊断自己的问题。
  • 请注意,在您的问题中,class Main 缺少 companion object 以及 main() 方法上的 @JvmStatic 注释。有关更多信息,请参阅我在上一条评论中发布的链接。

标签: intellij-idea kotlin


【解决方案1】:

您无法组装项目,因为 main 方法不是静态的。所以你应该在伴生对象中定义它。

class HelloKotlin {

        companion object {
            @JvmStatic fun main(args: Array<String>) {
                println("Kotlin main is running here!")
            }
        }
    }

【讨论】:

    【解决方案2】:

    有关如何识别顶级 main() 函数的可运行类或在类中使用 main() 方法的完整答案都记录在另一个 Stack Overflow 答案中:How to run Kotlin classes

    这包括在命令行、Intellij(如您的问题所问)、Gradle 等中运行。

    【讨论】:

      【解决方案3】:

      指定的“主类:” -> com.mypackage.MainKt

      并在包“com.mypackage”中创建 Kotlin 文件“Main”

      package com.mypackage
      
      fun main(args: Array<String>) {
          println("Hello Kotlin!")
      }
      

      【讨论】:

        【解决方案4】:

        打开包含您的主要功能的文件并转到菜单->“编辑配置”,然后在对话框中选择“+”,“应用程序”作为类型将名称设置为您想要的名称并通过单击设置主类在顶部输入框旁边的按钮上(标记为“主类”的那个)。

        选择“使用模块的类路径”并从下拉框中选择您的模块。单击“应用”并关闭对话框。现在您应该可以使用 shift+F10 运行,使用 shift+F9 进行调试,并使用 shift+alt+F10 编辑运行配置。您还可以通过主屏幕右上角的两个按钮运行或调试。

        【讨论】:

        • 选择班级的三点按钮不起作用(双击班级没有做任何事情),但我可以在那里输入班级的名称。现在它给了我一个错误“主要方法应该是静态的”,这对于 Kotlin 来说没有意义,因为没有这样的东西。我试图把它带出课堂,但没有奏效。
        【解决方案5】:

        另一种解决方案:

        fun main(){
            println("Hello world!")
        }
        

        请记住,它超出了类声明,还应该出现以下图标:

        点击:

        问题解决了。如果您想在 Main.kt 中尝试此代码:

        import javax.swing.JFrame
        
        fun main() {
            println("Hi, kotlin !!!")
            val window = Main()
        }
        
        class Main {
            constructor(){
                val frame = JFrame()
                frame.setSize(800, 600)
                frame.setLocationRelativeTo(null)
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
                frame.setVisible(true)
            }
        }
        

        问候!

        【讨论】:

          【解决方案6】:

          我将 main.kt 文件移动到项目的 src 文件夹中,问题解决了 即 IntelliJ 可以找到 MainKt 类

          【讨论】:

            【解决方案7】:

            我必须更新我的 Kotlin 插件(最近才发布),然后开始出现运行的右键单击选项。我无法将问题归结为其他任何事情,所以我认为就是这样。

            如果您遇到此问题,请右键单击 main 函数所在的源代码文件,然后单击运行、创建或调试。

            请注意,主函数必须具有名称“main”(没有大写字母)和一个“Array”参数。当我在制作新项目试图让它发挥作用时,这个问题让我有好几次。

            【讨论】:

              【解决方案8】:

              它工作正常...请检查。复制并粘贴此代码并运行。

              类 MyFirstKotlinClass {

              companion object {
                  @JvmStatic
                  fun main(args: Array<String>) {
                      println("=========>>>> run successful")
                  }
              }
              

              }

              【讨论】:

              • 对该问题的最高投票答案列出了与您几乎相同的代码,代码格式正确,并在其之上提供了解释。您究竟想在这里做出什么贡献?
              【解决方案9】:

              对于那些使用 intelliJ-2021 社区的人,我找到了解决方案 here,它基本上说将您的主要功能放在您创建的类之外。立即会出现运行按钮,配置会自行更新

              【讨论】:

                【解决方案10】:

                您可以通过创建目录和 XML 文件手动添加运行配置文件。

                .run/MainKt.run:

                <component name="ProjectRunConfigurationManager">
                  <configuration default="false" name="MainKt" type="JetRunConfigurationType" nameIsGenerated="true">
                    <option name="MAIN_CLASS_NAME" value="MainKt" />
                    <module name="untitled.main" />
                    <shortenClasspath name="NONE" />
                    <method v="2">
                      <option name="Make" enabled="true" />
                    </method>
                  </configuration>
                </component>
                

                您可以将 untitled.main 更改为您的项目名称。

                【讨论】:

                  【解决方案11】:

                  只需右键单击要运行的类并选择 Run ClassNameKt 选项,其余的将由 IntelliJ IDE 完成。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-05-31
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-07-13
                    • 2013-05-21
                    相关资源
                    最近更新 更多