【问题标题】:Unable to Run Kotlin Application in Eclipse无法在 Eclipse 中运行 Kotlin 应用程序
【发布时间】:2016-11-09 11:45:54
【问题描述】:

为了在 Eclipse 中创建我的第一个简单的 Kotlin 项目,我按照 Kotlin 官网 Getting Started with Eclipse Luna 教程中的步骤操作,即:

  • 从 Eclipse Marketplace 为 Eclipse 安装 Kotlin 插件
  • 打开 Kotlin 透视图并创建一个 Kotlin 项目
  • 使用main 方法在“src”文件夹中创建了文件“hello.kt”
  • 右键单击文件 > 运行方式 > Kotlin 应用程序

但是,我在 Eclipse 控制台中不断收到以下错误:

错误:无法找到或加载主类 HelloKt

我已经仔细检查了我的项目的运行配置,它确实将“主类”设置为HelloKt(我 100% 确定它不存在)。此外,当我点击“搜索”按钮时,Eclipse 找到的唯一项目是 HelloKt - (default package)(同样不存在)。

为了完整起见,请在下面找到hello.kt文件的代码:

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

我注意到本教程与我所做的有以下不同:

  • 我使用的是不同的 Eclipse 版本(教程建议使用 Luna;我使用的是 Mars.2)。
  • 我使用的是不同的 JDK 版本(教程没有建议任何特定版本,但从图片中我们可以看到他们使用了jdk1.6.0_45,而我使用的是jdk1.7.0_79

请注意,我使用的是最新版本的 Kotlin Eclipse 插件,因此这与 this post 中的情况不同。这些是我当前安装的版本:

  • Kotlin 0.7.2.v20160930-0748
    • kotlin-eclipse-policy 0.7.2.v20160928-1525
    • kotlin-weaving-feature 0.7.2.v20160928-1525

这些差异中的任何一个都可能是运行应用程序时出错的原因吗?

您是否看到/知道与这种情况有关的任何潜在原因或已知错误?


更新(2017 年 5 月 14 日)

尝试使用 Eclipse Neon.3 (eclipse.buildId=4.6.3.M20170301-0400)、JDK 1.8.0_111、Kotlin 0.8.2.v20170314-0957 (kotlin-eclipse-policy 0.8.2.v20170314-0957、 kotlin-weaving-feature 0.8.2.v20170314-0957,Equinox Weaving SDK 1.2.0.201701131634)。 问题仍然存在。

【问题讨论】:

  • 嗨!我刚刚用 jdk8 尝试了相同的步骤,但我无法重现该问题。你能尝试使用jdk8吗? Eclipse的推荐版本是4.6(Neon),网站上的版本已经过时了,很快就会更新。
  • 请注意,“HelloKt”是正确的,这是将 Kotlin 中具有顶级函数的文件转换为类文件的方式。
  • 感谢您的建议。我换成了 Eclipse Neon.1 (4.6.1) 和 jdk1.8.0_92,但得到了同样的错误。
  • 我认为你应该提交一个错误,因为你所做的一切似乎都是合理的,顺便提一下你的操作系统,因为教程显然使用了 Windows
  • 设置新工作区并重试。我解决了我的问题

标签: eclipse jvm kotlin jdk1.7


【解决方案1】:

对我来说,它只发生过一次。我认为这是 Kotlin 插件的一些故障,当您第一次创建 Kotlin 文件并尝试运行它时。 尝试“new Kotlin class”粘贴相同的内容,看看是否有效。 之后,您应该能够像我遇到的那样运行这两个文件。

【讨论】:

  • 感谢您的建议,但不幸的是它没有奏效。当我右键单击Kotlin Class 时,没有Run As &gt; Kotlin Application。尝试使用 Eclipse Neon.3 (eclipse.buildId=4.6.3.M20170301-0400), JDK 1.8.0_111, Kotlin 0.8.2.v20170314-0957 (kotlin-eclipse-policy 0.8.2.v20170314-0957, kotlin-weaving -feature 0.8.2.v20170314-0957,Equinox Weaving SDK 1.2.0.201701131634)。
  • @BashfulBeluga 您应该将 Kotlin 性质添加到您的 Eclipse 项目中。项目上下文菜单(右键) -> 配置 Kotlin -> 添加 Kotlin 性质
【解决方案2】:

尝试新的Kotlin File 而不是Kotlin Class

【讨论】:

  • 感谢您的建议,但不幸的是它没有奏效。发生了同样的错误,即Error: Could not find or load main class HelloKt。尝试使用 Eclipse Neon.3 (eclipse.buildId=4.6.3.M20170301-0400), JDK 1.8.0_111, Kotlin 0.8.2.v20170314-0957 (kotlin-eclipse-policy 0.8.2.v20170314-0957, kotlin-weaving -feature 0.8.2.v20170314-0957,Equinox Weaving SDK 1.2.0.201701131634)。
  • 在 Eclipse Oxygen 中工作
【解决方案3】:

我遇到了和你一样的问题。我尝试了很多方法但都不起作用(比如卸载插件,然后重新安装插件,删除项目并创建新项目......)

如何解决: 我创建了一个新工作区并再次设置了 helloworld 项目。看到生成了那个class文件,可以正常运行了。

请注意,我们创建的是新工作区而不是项目。我注意到工作区包含 .metadata 文件夹,其中可能包含大量 Eclipse 信息。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题, 它通过删除 JAVA_HOME 环境变量来解决。

    我在 JAVA_HOME 环境变量中设置了一个旧的 JDK 文件夹。

    【讨论】:

    • 这不是解决方案。最多是一种解决方法,但其他应用程序可能会受到此删除的影响。
    • 无论如何,对于 Kotlin File 和 Kotlin 类,我尝试了使用和不使用 JAVA_HOME 环境变量,但它仍然不起作用。
    【解决方案5】:

    尝试使用 Java 8 (1.8.0_144) 和 Eclipse Oxygen.1a Release (4.7.1a - build id 20171005-1200) 并使用以下插件版本:

      Kotlin    0.8.2.v20170314-0957    org.jetbrains.kotlin.feature.feature.group  JetBrains
        kotlin-eclipse-policy   0.8.2.v20170314-0957    org.jetbrains.kotlin.policy.feature.group   JetBrains
        kotlin-weaving-feature  0.8.2.v20170314-0957    org.jetbrains.kotlin.weaving.feature.feature.group  JetBrains
    

    一切都按预期工作,无需创建单独的工作区和/或使用Kotlin File 而不是Kotlin Class

    【讨论】:

      【解决方案6】:

      这对我有用.... 如果你去 Window -> Show View -> Navigator 它向您展示了更多工作空间的物理布局,而不是 Package Explorer 的逻辑视图。 右键单击定义了 main 函数的 kotlin 文件,然后单击 Run As -> Kotlin Application。 为我工作,虽然我会杀了能够使用常规运行配置,但这就是生活.....

      【讨论】:

      • 它适用于常规配置。请参考接受的答案。
      【解决方案7】:
      1. 转到Windows->显示视图->导航器
      2. 编辑 .project 文件,仅更改以下部分以将 Kotlin 文件编译到与 Java 文件相同的位置。
      <linkedResources>
              <link>
                  <!--name>kotlin_bin</name-->
                  <type>2</type>
                  <locationURI>org.jetbrains.kotlin.core.filesystem:/FindUniqueStrings/bin</locationURI>
              </link>
      </linkedResources>
      

      记住:

      1. 我已经注释掉了name 标签。否则,Kotlin 编译器会创建 src 文件夹 kotlin_bin 并将您的 kotlin 文件放在此文件夹中,而 kotlin 运行时将找不到它。
      2. 我的java项目的名字是FindUniqueStrings。你的会不一样。
      3. 通过在Navigator 视图中找到这些文件,仔细检查您的java 类文件是否已编译到项目的bin 文件夹中。

      【讨论】:

        猜你喜欢
        • 2018-05-02
        • 2012-10-08
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多