Импорт файлов Scala .class в MapForce

Altova Mapforce позволяет импортировать определенные пользователем функции из файлов Java .class. Поскольку Scala также компилируется в файлы Java .class, я решил, что могу использовать их взаимозаменяемо. Итак, я написал несколько тестовых объектов и обнаружил, что могу успешно импортировать файлы .class, но использование некоторых функций всегда приводило к сбою с

java.lang.NoclassDefFoundError: scala/что-то

Например, если скомпилировать следующий файл с 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? Иначе в чем причина?


person cheezsteak    schedule 03.03.2015    source источник
comment
Это связано с тем, что ваш код scala основан на стандартной библиотеке scala (так же, как он может полагаться на любой другой код) - я не знаком с Mapforce, но должна быть возможность передать ему jar среды выполнения scala для использования в его пути к классам.   -  person Gareth Latty    schedule 03.03.2015
comment
@Lattyware будет ли лучшим решением простое добавление Scala в переменную окружения?   -  person cheezsteak    schedule 03.03.2015
comment
*$env:CLASSPATH переменная   -  person cheezsteak    schedule 03.03.2015


Ответы (1)


Мне не удалось напрямую передать библиотеку scala в путь к классам приложений, как предложила Lattyware, но добавление ее в глобальный путь к классам позволило MapForce использовать классы scala в приложении.

PS C:\> echo $env:CLASSPATH
.;C:\Program Files\scala\lib;

Я не проверял, насколько хорошо это работает с генерацией кода Java.

person cheezsteak    schedule 04.03.2015