Ответ 1
Я также использую Twirl в проекте non-Play.
Если вы поместили файл в src/main/com/somethin/cool
, вы должны ожидать, что сгенерированный класс будет найден в com.somethin.cool.html.page
Если вы поместили файл в src/main/twirl/
, вы должны ожидать, что сгенерированный класс будет найден в twirl.html.page
Компилятор Twirl просматривает найденные файлы и помещает "html" (расширение действительно, это может быть каталог "txt" или "json" или...) под самым длинным общим подпутью файлов. Итак, скажите, что у вас было:
src/main/com/somethin/cool/page1.scala.html
src/main/twirl/page2.scala.html
Тогда общим самым длинным подпунктом файлов является src/main (т.е. корень пути к классам). Затем вы получите следующие классы:
html.com.somethin/cool/page1
html.twirl.page2
Теперь, чтобы обратиться к компилятору с жалобой на часть undefined: вы могли бы означать несколько вещей.
Если вы имеете в виду, что фактический Scala компилятор, выполняемый sbt, не находит его, у меня никогда не было проблемы с этим. Сгенерированные файлы источника и .class находятся в пути под target/scala_2.10/twirl/main
. В этом случае вам может потребоваться более четкое описание жалобы компилятора и пути к компиляции.
Но если вы имеете в виду, что ваша IDE не распознает исходный файл, вам нужно добавить каталог target/scala_2.10/twirl/main
в качестве одного из исходных каталогов, используемых вашим проектом.
Еще одна проблема, с которой я пользуюсь Twirl, заключается в том, что IntelliJ IDEA 14 IDE на самом деле не поддерживает компилятор twirl, по крайней мере, вне проекта Play. Всякий раз, когда я обновляю шаблон Twirl, я всегда должен скомпилировать его с помощью sbt вместо встроенного компилятора IntelliJ IDEA. Люди JetBrains говорят мне, что они работают над исправлением для этого (я зарегистрировал проблему с ними об этом.)
ОБНОВЛЕНИЕ (12/14/14): Проблема с JetBrains, которую я зарегистрировал, в этом месте. Для этого тестовый пример здесь, на github