"объектный индекс не является членом пакета views.html" при открытии проекта scala play в scala ide

Я создал игровой проект с игрой 2.3.7

В каталоге проекта я запустил активатор и запустил eclipse команда для создания файлов проекта затмения.

Когда я иду к затмению (я использую Scala IDE от typesafe Build id: 4.0.0-vfinal-20150119-1023-Typesafe, в моем файле Application.scala есть ошибка:

object index is not a member of package views.html

Что-то не так с моей настройкой? Приложение работает нормально, когда я выполняю run в приглашении консоли активации.

Спасибо!

РЕДАКТИРОВАТЬ: Добавлен код

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, и приложение запускает файл, когда я запускаю его из активатора.

10 ответов

Иногда после добавления представления в Play 2.4.x, IntelliJ IDEA иногда путается и абсолютно отказывается от сборки. Даже перестроить проект не удалось:

введите описание изображения здесь

Это время от времени происходит в IDEA 15. А когда это происходит, командная строка обеспечивает самое быстрое и наиболее надежное исправление:

свт чистый; sbt compile

Это оно! IDEA теперь скомпилирует проект, как и ожидалось.

Обновить:

В редком случае sbt compile успешно завершен в командной строке, но IntelliJ IDEA 15 по-прежнему выдает ту же ошибку "объект x не является членом", тогда это решило путаницу IDEA:

Меню Файл:

введите описание изображения здесь

Другие решения не работают для меня. Некоторые из них будут давать мне другие ошибки, некоторые будут очищать вкладку "Проблемы", но оставят меня с красным загогулином под 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 каталог.

В Scala IDE 4.0.0 считает, что в готовой программе Play Framework 2.3.7 есть ошибки, решение которых вы можете найти (вкратце: добавление target/scala-2.11/twirl/main папку к пути компиляции), попробуйте.

У меня такая же проблема. я добавил target/scala-2.x/classes а также target/scala-2.x/classes_managed на мой путь сборки Java и Eclipse перестал жаловаться.

Добавление target/scala-2.11/twirl/main который имеет views.html пакет для источника исправлен для меня.

У меня была та же проблема при запуске Play 2.4.0-RC1 с использованием макета SBT по умолчанию (disablePlugins(PlayLayoutPlugin)) и решил это, добавив в build.sbt:

sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
    (unmanagedSourceDirectories in Compile).value

Ответ @brent-foust работал на меня, но только на начальном этапе. Каждый раз, когда я перестраивал проект изнутри 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.

Я перепробовал все решения без положительного результата.
Итак, я пошел вPreferences > Build, Execution, Deployment > Build Tools > sbt и проверил Use sbt shellдля импорта и сборки.
Это позволяет кнопке компиляции в intelliJ компилироваться с оболочкой sbt. Я думаю, что в любом случае это лучше, поскольку сервер сборки или что-то подобное будет компилироваться таким же образом, а не как intelliJ.

По сути, нам нужен способ поместить скомпилированные классы в путь, чтобы это работало.

Я сделал следующее, чтобы это исправить. Поскольку проекты компилируются в target каталог. Я пошел в Project Properties -> Java Build Path и добавил несколько папок, которые выглядят так,

цель /scala-2.12/ маршруты / главная цель /scala-2.12/ вертеть цель /scala-2.12/ вертеть / главная

Теперь я не хочу, чтобы вы предполагали, что у вас будут именно эти папки и в вашем случае. Это зависит от настроек вашего проекта. Но вы должны добавить папки внутри папки target/scala-2.x.

Для меня при импорте проекта в intellij, удостоверившись, что я "проверил", флажок "auto import" сделал свое дело.

1) Добавьте следующую строку в ваш файл sbt.build:

EclipseKeys.preTasks := Seq(compile in Compile)

2) Добавьте следующую строку в файл plugins.sbt в папке проекта:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")

3) Запустите команду "eclipse" изнутри sbt

как объяснено в документации игровой среды:

Настройка предпочитаемого IDE

Другие вопросы по тегам