Проблема компиляции Scala + Stax во время процесса развертывания - PullRequest
3 голосов
/ 05 августа 2010

Я разработал приложение в scala-ide (плагин eclipse), без ошибок и предупреждений. Сейчас я пытаюсь развернуть его в облаке stax:

$ stax deploy

Но он не скомпилирован:

compile:
   [scalac] Compiling 2 source files to /home/gleontiev/workspace/rss2lj/webapp/WEB-INF/classes
error: error while loading FlickrUtils, Scala signature FlickrUtils has wrong version
 expected: 4.1
 found: 5.0
/home/gleontiev/workspace/rss2lj/src/scala/example/snippet/DisplaySnippet.scala:8: error: com.folone.logic.FlickrUtils does not have a constructor
        val dispatcher = new FlickrUtils("8196243@N02")
                         ^
error: error while loading Photo, Scala signature Photo has wrong version
 expected: 4.1
 found: 5.0
/home/gleontiev/workspace/rss2lj/src/scala/example/snippet/DisplaySnippet.scala:9: error: value link is not a member of com.folone.logic.Photo
        val linksGetter = (p:Photo) => p.link
                                         ^
/home/gleontiev/workspace/rss2lj/src/scala/example/snippet/DisplaySnippet.scala:15: error: com.folone.logic.FlickrUtils does not have a constructor
        val dispatcher = new FlickrUtils("8196243@N02")
                         ^
/home/gleontiev/workspace/rss2lj/src/scala/example/snippet/DisplaySnippet.scala:16: error: value medium1 is not a member of com.folone.logic.Photo
        val picsGetter = (p:Photo) => p.medium1
                                        ^
/home/gleontiev/workspace/rss2lj/src/scala/example/snippet/RefreshSnippet.scala:12: error: com.folone.logic.FlickrUtils does not have a constructor
        val dispatcher = new FlickrUtils("8196243@N02")
                         ^
7 errors found
ERROR: : The following error occurred while executing this line:
/home/gleontiev/workspace/rss2lj/build.xml:61: Compile failed with 7 errors; see the compiler error output for details.

Я вижу две ошибки, на которые жалуется: первая - конструктор класса FlickrUtils, который определяется следующим образом:

class FlickrUtils(val userId : String) {
    //...
}

Вторым является тот факт, что в классе Photo отсутствуют два поля:

class Photo (val photoId:String, val userId:String, val secret:String, val server:String) {
    private val _medium1 = "/sizes/m/in/photostream"
    val link = "http://flickr.com/photos/" + userId + "/" + photoId
    val medium1 = link + _medium1
}

Похоже, что Stax SDK использует неправильный компилятор (?). Как мне сделать, чтобы он использовал правильный? Если это не так, в чем здесь проблема, и как ее решить?

Редактировать: $ scala -version говорит

Scala code runner version 2.8.0.final -- Copyright 2002-2010, LAMP/EPFL

Я попытался скомпилировать все с помощью scalac вручную, поставить все на свои места и запустить stax deploy впоследствии - тот же результат.

1 Ответ

1 голос
/ 06 августа 2010

Я на самом деле решил эту проблему, переместив классы FlickrUtils и Photo в пакеты, где изначально были фрагменты, но я до сих пор не понимаю, почему он не смог скомпилировать и использовать их из другого пакета.

...