这主要是想测试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来运行它,结果也差不多。
以下是
在IntelliJ中:
但是NetBeans找不到符号
也许插件忽略了一些必要的路径?
我想过仔细检查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找不到符号
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
以防万一,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生成的字节码,但我对此不够了解,无法理解其含义。