NetBeans可以运行Kotlin吗?

5
这主要是想测试Kotlin在NetBeans中是否能正常工作,即使需要跨越很多障碍才能实现也没关系。如果我真的需要使用Kotlin,我有IntelliJ可用。
据说Kotlin可以在Eclipse和NetBeans中使用。在NetBeans中,似乎你可以随意编写Kotlin代码,但它不会运行。
我安装了Kotlin for NetBeans插件,并且它似乎可用。它具有所有预期的提示和语法高亮功能。但是,在实际运行使用Kotlin编写的内容时,NetBeans似乎完全无法胜任。我还在将JUnit导入到Kotlin测试类时遇到了麻烦。
但在任何其他事情之前,首先要完成的事情就是Hello World。我尝试了几个简单的Hello Worlds。Java版本的Hello World可以运行,而Kotlin版本的Hello World不能运行。我甚至尝试通过Scala REPL来运行它,结果也差不多。
以下是HelloWorld.kt文件(只缺少许可证头文件提醒和生成的Javadoc):
package basicexerciseskotlin

fun main(args: Array<String>) = println("Hello, world, from Kotlin!")

我初稿中有很多错误和警告,提示帮助我把它变成了现在这个形式,所以现在我有了一个绿色的指示器。但是“Run > Run File”被灰掉了,并且快捷键也没有反应。

然后我想也许我可以从一个Java类中调用HelloWorld.main()。为了找出如何做到这一点,我在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);
    }

}

在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


但是NetBeans找不到符号 HelloWorldHelloWorldKt。 在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

以防万一,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

也许插件忽略了一些必要的路径?
我想过仔细检查IntelliJ生成的字节码,但我对此不够了解,无法理解其含义。

1
你会遇到很大的困难,因为Kotlin NetBeans插件已经“基本上死亡”(超过2年没有更新)。(参见https://github.com/JetBrains/kotlin-netbeans/issues/122) - Pawel
1
请参阅此讨论:这个插件已经死了吗? 有关Kotlin插件的NetBeans,其中包括来自JetBrains的Kotlin开发人员的评论。他几个月前的一条评论声明[“抱歉各位,这个项目仍然是死的,并且仍然没有计划恢复任何工作”](https://github.com/JetBrains/kotlin-netbeans/issues/122#issuecomment-485908587)。因此,不幸的是,您的问题的答案是否定的,NetBeans无法运行Kotlin。 - skomisa
2
但是JetBrains即将向NetBeans捐赠该插件:https://github.com/JetBrains/kotlin-netbeans/issues/137 - Joachim Rohde
1
Apache将在解决法律问题后立即使用捐赠的插件:https://github.com/apache/netbeans/pull/1398 - Stef
1个回答

1

这个PR看起来已经合并了,但是当我在Netbeans 15上搜索Kotlin插件时,似乎没能找到它。 - Rafs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接