2015-02-07 2 views
0

Я пытаюсь узнать Play, Scala и Guice на данный момент, и у меня проблема с version 2.3.7 of Play. Когда я запускаю пример, изменяя плагины. sbt Воспроизводит версию до 2.3.6 приложение ApplicationController приложения загружается нормально. Однако при переключении на 2.3.7 в plugins.sbt я просто получаю пустую страницу.Почему Play v2.3.6 работает с Guice, но не Play v2.3.7?

Я объединил пример Play-Guice (который построен с более ранней версией Play) с примером доступа к данным .

Вот мой Application.scala играть код контроллера без упаковки и импорта:

@Singleton 
class Application @Inject() (textGenerator: TextGenerator) extends Controller { 

    def index = Action { 
    Ok(views.html.index(textGenerator.welcomeText)) 
    } 

} 

object Application extends Controller { 
    def index = Action { 
    Ok(views.html.index("Your new application is ready.", "Home")) 
    } 
} 

Вот мой Global.scala (минус импорт):

object Global extends GlobalSettings { 

    /** 
    * Bind types such that whenever TextGenerator is required, an instance of WelcomeTextGenerator will be used. 
    */ 
    val injector = Guice.createInjector(new AbstractModule { 
    protected def configure() { 
     bind(classOf[TextGenerator]).to(classOf[WelcomeTextGenerator]) 
    } 
    }) 

    /** 
    * Controllers must be resolved through the application context. There is a special method of GlobalSettings 
    * that we can override to resolve a given controller. This resolution is required by the Play router. 
    */ 
    override def getControllerInstance[A](controllerClass: Class[A]): A = injector.getInstance(controllerClass) 
} 

Может кто-нибудь увидеть, почему одна версия игры будет работать, но не другой?

Любые запросы информации или образованные догадки также приветствуются!

Примечание: до сих пор нет явного сообщения об ошибке, единственная разница, которую я видел между двумя версиями, - это одна загрузка страницы, а другая - нет. Нет известных зарегистрированных ошибок, сообщений об ошибках или различий кода (кроме, конечно, переключателя версии).

Build.scala (минус импорт):

object ApplicationBuild extends Build { 

    val appName   = "root" 
    val appVersion  = "1.0-SNAPSHOT" 

    val appDependencies = Seq(
    "com.google.inject" % "guice" % "3.0", 
    "javax.inject" % "javax.inject" % "1", 

    "org.mockito" % "mockito-core" % "1.9.5" % "test" 
) 


    val main = Project(appName, file(".")).enablePlugins(play.PlayScala).settings(
    version := appVersion, 
    libraryDependencies ++= appDependencies 
) 

} 
+0

Любой выход из корпуса SBT? – Mikesname

+0

@Mikesname - я не вижу ничего в окне журнала вкладки воспроизведения, просто типичные сообщения запуска. Я посмотрю, смогу ли я выяснить, есть ли там какие-то другие записи, которые я пропускаю. Также я думал о добавлении журнала в контроллер, что могло бы помочь. –

+0

Я использую 4.0-бета5, и мое приложение работает с игрой 2.3.7 (и ранее). –

ответ

0

Позже я вернулся и попытался вернуться к 2.3.7, как @akkie предложил, а сайт был в состоянии запустить и нормально работать.

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

Либо

  1. разводку гладкий доступ к данным учетных данных позволило серверу для начала после разговора с БД.
  2. По какой-то причине я не работал с последней сборки

иметь в виду, что это только предположения, так что я, возможно, пропустили некоторые другие изменения, которые помогли решить проблему. Тем не менее, я полагаю, что мне или кому-то еще может помочь, прочитав мои заметки о том, как заставить его работать позже.

Смежные вопросы