将 Scala .class 文件导入 MapForce
Importing Scala .class files into MapForce
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 正在为 Scala 类 搜索 Java 库。如果那是正确的,那么我如何告诉 MapForce 包含 Scala 库?不然是什么原因?
我无法按照 Lattyware 的建议将 scala 库直接传递到应用程序类路径,但将其添加到全局类路径允许 MapForce 在应用程序中使用 scala 类。
PS C:\> echo $env:CLASSPATH
.;C:\Program Files\scala\lib;
我还没有测试生成 Java 代码的效果如何。
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 正在为 Scala 类 搜索 Java 库。如果那是正确的,那么我如何告诉 MapForce 包含 Scala 库?不然是什么原因?
我无法按照 Lattyware 的建议将 scala 库直接传递到应用程序类路径,但将其添加到全局类路径允许 MapForce 在应用程序中使用 scala 类。
PS C:\> echo $env:CLASSPATH
.;C:\Program Files\scala\lib;
我还没有测试生成 Java 代码的效果如何。