这更多的是要看Kotlin是否真的可以在NetBeans中工作,即使它需要跳过太多的圈才是实用的。如果我真的需要使用Kotlin,我有IntelliJ。
据说Kotlin可以在Eclipse和NetBeans中使用。看起来你可以用NetBeans写Kotlin你想写的任何东西,但是它根本不会运行。
我为NetBeans插件安装了Kotlin,它看起来很管用。它具有人们所期望的所有提示和语法突出显示。但是当涉及到实际运行用Kotlin编写的东西时,NetBeans似乎完全无能为力。我还很难将JUnit导入到Kotlin测试类中。
但在其他事情之前,第一件要做的事就是“你好世界”。我试过几个简单的“你好世界”。Java Hello World运行。Kotlin Hello没有,我甚至尝试在Scala中运行它,得到了相同的结果。
从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中:
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生成的字节码,但我对此还不太了解。
发布于 2021-03-07 21:45:41
关于这一主题有两个问题表明正在取得进展:
公认的公关是一个良好的迹象,它可能很快就会进入正式的插件名单。
https://stackoverflow.com/questions/57741229
复制相似问题