NetBeans 可以运行 Kotlin 吗?

Alo*_*rte 5 netbeans kotlin

这更多是为了看看 Kotlin 是否真的可以在 NetBeans 中工作,即使它需要跳过太多的障碍才能实用。如果我确实需要使用 Kotlin,我可以使用 IntelliJ。

据说 Kotlin 可以在 Eclipse 和 NetBeans 中使用。看起来您可以在 NetBeans 中随心所欲地编写 Kotlin,但它根本无法运行。

我安装了 Kotlin for NetBeans 插件,它似乎可以工作。它具有人们所期望的所有提示和语法突出显示。但当涉及到实际运行用 Kotlin 编写的东西时,NetBeans 似乎完全无能为力。我在将 JUnit 导入 Kotlin 测试类时也遇到了问题。

但首先要完成的事情是 Hello World。我尝试了几个简单的 Hello World。Java Hello World 运行。Kotlin Hello World 没有。我什至尝试通过 Scala REPL 运行它,得到了大致相同的结果。

来自HelloWorld.kt(这只是缺少许可证头提醒和生成的 Javadoc):

package basicexerciseskotlin

fun main(args: Array<String>) = println("Hello, world, from Kotlin!")
Run Code Online (Sandbox Code Playgroud)

我的初稿有很多错误和警告,提示帮助我将其变成了这种形式,所以现在我有一个绿色指示器。但是“运行”>“运行文件”呈灰色,并且键盘快捷键不起作用。

然后我想也许我可以HelloWorld.main()从 Java 类中调用。为了弄清楚如何做到这一点,我在 IntelliJ 中做了一个类似的项目。我将 IntelliJ 中的内容复制到 NetBeans,但我必须注释掉调用HelloWorldKt.

来自BasicExercisesKotlin.java(项目中的主类,就 NetBeans 而言):

package basicexerciseskotlin;

public class BasicExercisesKotlin {

    public static void main(String[] args) {
        System.out.println("Hello world, from Java!");
        String[] kArgs = {""};
//        HelloWorldKt.main(kArgs);
    }

}
Run Code Online (Sandbox Code Playgroud)

在 IntelliJ 中:

/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java ...
Hello, world, from Java!
Hello, world, from Kotlin!

Process finished with exit code 0

Run Code Online (Sandbox Code Playgroud)

但 NetBeans 找不到该符号HelloWorld,也找不到HelloWorldKt.

在 Scala REPL 中:

scala> basicexerciseskotlin.BasicExercisesKotlin.main(null)
Hello world, from Java!

scala> basicexerciseskotlin.HelloWorldKt.main(null)
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
  at basicexerciseskotlin.HelloWorldKt.main(HelloWorld.kt)
  ... 28 elided
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
  at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 29 more
Run Code Online (Sandbox Code Playgroud)

以防万一null出现问题:

scala> val kArgs = Array("")
kArgs: Array[String] = Array("")

scala> basicexerciseskotlin.HelloWorldKt.main(kArgs)
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
  at basicexerciseskotlin.HelloWorldKt.main(HelloWorld.kt)
  ... 28 elided
Run Code Online (Sandbox Code Playgroud)

也许插件忽略了解析一些必要的路径?

我确实考虑过仔细检查 IntelliJ 生成的字节码,但我对此了解不够,无法理解它。

tho*_*ork 1

关于该主题的两个问题表明正在取得进展:

PR 被接受是一个好兆头,表明它很快就会进入官方插件列表。