"индекс объекта не является членом пакета views.html" при открытии проекта воспроизведения scala в scala ide
Я создал игровой проект с игрой 2.3.7
В каталоге проекта я запустил активатор и запустил команду eclipse
для создания файлов проекта eclipse.
Когда я перехожу к eclipse (я использую Scala IDE из типов: Тип сборки: id: 4.0.0-vfinal-20150119-1023-Typesafe, в моем файле Application.scala есть ошибка:
object index is not a member of package views.html
Что-то не так с моей настройкой? Приложение работает нормально, когда я выполняю run
в приглашении консоли активации.
Спасибо!
EDIT: Добавлен код
package controllers
import play.api._
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
Ошибка находится в строке "Ok..".
В представлениях, называемых index.scala.html, есть файл, и приложение запускает файл, когда я запускаю его из активатора.
Ответы
Ответ 1
Иногда после добавления представления в Play 2.4.x IntelliJ IDEA иногда путается и абсолютно отказывается строить. Даже перестраивать проект не удается:
![введите описание изображения здесь]()
Это все время происходит от времени от времени в IDEA 15. И когда это происходит, командная строка обеспечивает самое быстрое и надежное исправление:
sbt clean; sbt compile
Что это! ИДЕЯ теперь будет компилировать проект, как ожидалось.
Update:
В редком случае, когда sbt compile
успешно завершен в командной строке, но IntelliJ IDEA 15 все еще дает ту же ошибку "объект x не является членом", тогда это решило путаницу IDEA:
Меню "Файл":
![введите описание изображения здесь]()
Ответ 2
Другие решения не помогли мне. Некоторые из них дадут мне разные ошибки, некоторые уберут вкладку "Проблемы", но оставят меня с красным отбросом под views.html.index
, а автозаполнение не будет работать с шаблонами scala.html.
Что в конечном итоге работало, так это открыть свойства проекта, перейти в Java Build Path > Source
и добавить оба следующих каталога:
target/scala-2.11/src_managed/main
target/scala-2.11/twirl/main
Если вы выполняете только target/scala-2.11/twirl/main
, вы пропустите файлы классов, созданные в каталоге conf
.
Ответ 3
В Scala IDE 4.0.0 считает, что есть ошибки в готовой программе Play Framework 2.3.7, вы можете найти решение (в краткое: добавление папки target/scala-2.11/twirl/main
в путь компиляции), попробуйте.
Ответ 4
У меня была та же проблема. Я добавил target/scala-2.x/classes
и target/scala-2.x/classes_managed
в мой путь построения Java, и Eclipse перестала жаловаться.
Ответ 5
У меня была одна и та же проблема с запуском Play 2.4.0-RC1 с использованием макета SBT по умолчанию (disablePlugins(PlayLayoutPlugin)
) и была решена с помощью добавления build.sbt
:
sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
(unmanagedSourceDirectories in Compile).value
Ответ 6
Добавление target/scala-2.11/twirl/main
, у которого есть пакет views.html
для исправления для меня.
Ответ 7
Ответ на
fred ответил мне, но только изначально. Каждый раз, когда я перестраивал проект изнутри IDEA, я получал ошибки "не найден: маршруты" в пределах target\scala-2.11\twirl\main\views\html\main.template.scala
, пока я не повторил обходное решение Brent.
В итоге я обнаружил, что решение этого вопроса изменило строку в .iml файле из
<excludeFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" />
к
<sourceFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" isTestSource="false" />
Я не знаю, каковы долгосрочные последствия этого, но он устранил эту проблему. Некоторые из других подобных проблем можно также устранить, применив одно и то же изменение к некоторым другим папкам, перечисленным в .iml.
Ответ 8
Для меня при импорте проекта в intellij, убедившись, что я "проверил", флажок "автоматический импорт" сделал трюк.
Ответ 9
1) Добавьте следующую строку в файл sbt.build:
EclipseKeys.preTasks := Seq(compile in Compile)
2) Добавьте строку follwing в файл plugins.sbt в папке проекта:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")
3) Запустите команду "затмение" изнутри sbt
как объясняется в документации к платформе воспроизведения:
Настройка предпочтительной среды IDE
Ответ 10
В принципе, нам нужен способ поставить скомпилированные классы на путь для этого.
Я сделал следующее, чтобы исправить это.
Поскольку проекты компилируются в каталог target
.
Я перешел на путь сборки Java Project Properties
→ и добавил несколько папок, которые выглядят следующим образом:
мишень/scala -2,12/маршруты/основные
мишень /scala -2,12/Гайковерты
мишень / scala -2,12/Гайковерты/Основной
Теперь я не хочу, чтобы вы предполагали, что у вас будут эти точные папки и в вашем случае. Это зависит от настройки вашего проекта.
Но вы должны добавить папки в папку target/ scala -2.x.
Ответ 11
Я перепробовал все решения без какого-либо позитивного результата.
Поэтому я пошел в " Preferences > Build, Execution, Deployment > Build Tools > sbt
и Preferences > Build, Execution, Deployment > Build Tools > sbt
флажок " Use sbt shell
для импорта и сборки".
Это позволило кнопке компиляции в intelliJ скомпилировать с оболочкой sbt. Я думаю, что в любом случае это лучше, так как сервер сборки или что-то подобное будет компилироваться таким же образом, а не как intelliJ.