Невозможно разрешить методы обратной маршрутизации в IntelliJ

Я следую одному из учебных руководств по игре, но я получаю ошибки компиляции всякий раз, когда я пытаюсь использовать обратную маршрутизацию. Во-первых,

public static Result javascriptRoutes() {
    response().setContentType("text/javascript");
    return ok(
        Routes.javascriptRouter("jsRoutes",
            controllers.routes.javascript.Projects.add(),
            controllers.routes.javascript.Projects.delete(),
            controllers.routes.javascript.Projects.rename(),
            controllers.routes.javascript.Projects.addGroup()
        )
    );
}

где ошибка, показанная в intelliJ, не может разрешить метод javascriptRouter (java.lang.String,?,?,?,?) '

Но также в unit test:

@Test
public void notAuthenticated() {
    Result result = callAction(
            controllers.routes.ref.Application.index(),
            fakeRequest()
    );
    assertEquals(303, status(result));
    assertEquals("/login", header("Location", result));
}

где он не может разрешить индексный метод.

Это проблема с intelliJ, или я что-то пропускаю в игре?

В первой части, вот запись в файле маршрутов:

GET     /assets/javascripts/routes  controllers.Application.javascriptRoutes()

и мой контроллер, Projects, имеет определенные методы.

Ответы

Ответ 1

Файл Структура проекта

Выберите Источники в правой панели

Добавить исходную папку

мишень/scala -XXX/classes_managed

мишень/scala -XXX/src_managed/Основной

Ответ 2

Я столкнулся с той же проблемой и нашел решение здесь: https://github.com/playframework/Play20/issues/969

Короче:

  • Создайте каталоги javascript и ref под пакетом контроллеров
  • Запустите activator compile, и теперь Intellij должен его//использовать для "воспроизведения компиляции"
  • Если у вас все еще есть ошибки, попробуйте снова запустить activator idea//используется для "play compile" *

Ответ 3

Вытянут из ссылки, предоставленной @Markus Kittig. Отличное временное исправление. https://github.com/playframework/playframework/issues/1784#issuecomment-26345523

Сводка: Добавьте target/ scala -XXX в качестве управляемого источника и удалите флажки приложений и источники источников поиска внутри File- > Project Structure- > Modules- > Sources. Затем перекомпилируйте.

Работает над IntelliJ Ultimate 12.1. {4 | 6}. Создал игровое приложение с интерфейсом командной строки и сгенерировал файл проекта с помощью play idea. Использовал Play 2.2.0.

Ответ 4

С IntelliJ 14.1 и Play 2.3.8 ничего из этого не было, но совет из этого списка рассылки работал. (Почти) явно скопировано:

Найдите цель / scala -2.11/src_managed и target/scala -2.11/twirl каталогов в представлении проекта, затем щелкните правой кнопкой мыши и отметьте каталог As → Generated Sources (Root).

Я столкнулся с версией scala и, очевидно, в новых версиях IntelliJ было добавлено слово Root. Кроме того, вы не можете выбрать это из окна "Структура проекта", этот параметр недоступен. Это возможно только через панель Project в главном окне. Если он не будет отмечен как Generated Sources, попробуйте снять отметку с каталога target (Отметить каталог как → Снять отметку).

Ответ 5

Для пользователей, использующих Play 2.4.x или выше, кажется, что Play больше не создает файлы обратной маршрутизации для javascript в src_managed et al.

Вместо этого вам нужно включить каталог scala-2.xx/routes/main как Sources.

Ответ 6

Этот вопрос был задан год назад, но для ответа на другие запросы другим разработчикам проблемы легко решить, добавив путь "play.Routes", как этот

public static Result javascriptRoutes() {
    response().setContentType("text/javascript");
    return ok(
            play.Routes.javascriptRouter("jsRoutes",

                    // Routes for Projects
                    controllers.routes.javascript.Projects.add(),
                    controllers.routes.javascript.Projects.delete(),
                    controllers.routes.javascript.Projects.rename(),
                    controllers.routes.javascript.Projects.addGroup()
            )
    );

}

Убедитесь, что у вас есть правильный импорт в класс:

import play.mvc.*;
import play.data.*;

Ответ 7

Я использую идею сообщества Idea 14.1.4, мне удалось удалить индексы и маршрутизировать не разрешенные ошибки, щелкнув правой кнопкой мыши по целевой папке и отметив ее как не исключенную. NB я запускаю свой проект с помощью командной строки, я не могу найти какую-либо конфигурацию запуска в ide.