Altova Mapforce允许从Java .class
文件导入用户定义的函数。由于Scala也编译为Java .class
文件,我想我可以互换使用它们。所以我写了一些测试对象,发现我可以成功导入.class
个文件但是使用某些函数会一直失败
java.lang.NoclassDefFoundError:scala / something
例如,如果使用scalac
编译以下文件。我可以毫无问题地导入Pass.class
和Fail.class
object Pass {
def echo(s: String): String = s // no errors
}
object Fail {
def greet(name: String): String = {
// java.lang.NoClassDefFoundError: scala/collection/mutable/StringBuilder
"Hello, " + name
}
}
使用Pass.echo
有效但Fail.greet
会引发错误java.lang.NoClassDefFoundError: scala/collection/mutable/StringBuilder
。
我的理解是Mapforce正在Java库中搜索Scala类。如果这是正确的,那么我如何告诉MapForce包含Scala库?否则,原因是什么?
答案 0 :(得分:0)
我无法直接将scala库传递给应用程序类路径,因为Lattyware建议将其添加到全局类路径中,允许MapForce在应用程序中使用scala类。
PS C:\> echo $env:CLASSPATH
.;C:\Program Files\scala\lib;
我没有测试过生成Java代码的效果如何。