GraalVm Polyglot应用程序-是否可以在运行时从java计算kotlin脚本?
GraalVM Polyglot API允许在基于JVM的主机应用程序中嵌入和运行来自来宾语言的代码。我正在使用GraalVm Polyglot应用程序-是否可以在运行时从java计算kotlin脚本?,java,kotlin,graalvm,Java,Kotlin,Graalvm,GraalVM Polyglot API允许在基于JVM的主机应用程序中嵌入和运行来自来宾语言的代码。我正在使用native image并另外安装了python,因此我可以通过 context.eval(“js”,“print('Hello JavaScript!');”) eval(“python”,“print('Hello python!');”) 它很好用。但是,如果我尝试以类似的方式评估kotlin脚本- context.eval(“kotlin”,“数据类公司(val名称:Stri
native image
并另外安装了python
,因此我可以通过
context.eval(“js”,“print('Hello JavaScript!');”)
eval(“python”,“print('Hello python!');”)
它很好用。但是,如果我尝试以类似的方式评估kotlin脚本-
context.eval(“kotlin”,“数据类公司(val名称:String,val年份:Long)”)
然后它失败了
Exception in thread "main" java.lang.IllegalArgumentException: A language with id 'kotlin' is not installed. Installed languages are: [js, llvm, python].
at com.oracle.truffle.polyglot.PolyglotEngineException.illegalArgument(PolyglotEngineException.java:128)
at com.oracle.truffle.polyglot.PolyglotEngineImpl.requirePublicLanguage(PolyglotEngineImpl.java:867)
at com.oracle.truffle.polyglot.PolyglotContextImpl.requirePublicLanguage(PolyglotContextImpl.java:899)
at com.oracle.truffle.polyglot.PolyglotContextImpl.eval(PolyglotContextImpl.java:868)
at org.graalvm.polyglot.Context.eval(Context.java:345)
at org.graalvm.polyglot.Context.eval(Context.java:371)
我知道它声明只有[js、llvm、python]
可用,但我想知道是否可以添加任何内容,以便能够以类似的方式评估kotlin
脚本?或者可能有另一种方法可以从java应用程序在运行时评估动态kotlin脚本
谢谢。尝试安装kotlinDear@Pierre,谢谢您的帮助!但是,我不认为这能解决问题,因为graalvm polyglot api需要在kotlin运行时实现truffle api并与polyglot api集成。简单编译器安装并不能解决这个问题,因为它不是对编译器的简单调用。