Почему Scala IDE не может скомпилировать метод, хотя и предлагает его?

Я неоднократно сталкивался с подобной проблемой со Scala IDE. Благодаря автодополнению с помощью вкладок Scala IDE предлагает несколько методов. Однако всегда, когда я выбираю метод, он жалуется, что не может его разрешить. На скриншоте я выбираю метод findByEan из models.Product. После выбора предложенного метода получаю сообщение об ошибке:

Multiple markers at this line
    - Line breakpoint:Products [line: 16] - show
    - value findByEan is not a member of object models.Product

выбор метода из models.Product

Он жалуется, что .findByEan() не является частью models.Product. Как видно из листинга выше, у объекта Product есть этот метод. Конечно, он даже предложил мне это несколько секунд назад!

package models

case class Product(ean:Long, name:String, description:String)


object Product{

   var products = Set() // some products ...

   def find_all = products.toList.sortBy(_.ean)
   def findByEan(ean:Long) = products.find(_.ean == ean)

Аналогичная проблема возникает, когда я добавляю представления шаблонов в контроллеры.

  • Почему Scala IDE не может скомпилировать предлагаемые методы?

Версия Scala IDE: 3.0.2-vfinal-20131028-1923-Typesafe


person Jon    schedule 25.11.2013    source источник
comment
Я не могу воспроизвести его с вашим исходным кодом (мне пришлось переместить package models вверху файла Product.scala, иначе это ошибка в этом файле). Есть ли что-нибудь еще, что я мог бы попробовать?   -  person Iulian Dragos    schedule 25.11.2013
comment
извините, это произошло, когда я скопировал код в stackoverflow.   -  person Jon    schedule 25.11.2013
comment
Я несколько раз перезапускал Scala IDE. Ошибка выше исчезла, но теперь не может найти details в Ok(views.html.products.details(product)).   -  person Jon    schedule 25.11.2013


Ответы (1)


О невозможности найти details. Судя по его полному имени, это шаблон Play.

Шаблоны Play компилируются самим Play, они только набираются и проверяются внутри редактора шаблонов. Чтобы они были перечислены в завершенном виде, они должны быть скомпилированы (выполнено путем обновления приложения в веб-браузере) и видимы в среде Scala IDE (выполнено путем обновления проекта в среде IDE).

Также можно настроить среду таким образом, чтобы компиляция + обновление выполнялись автоматически. Шаги описаны в этом руководстве.

person skyluc    schedule 26.11.2013