Scala Play项目中的简单SBT模块由于未知原因导致Play崩溃-Play 2.1

Scala Play项目中的简单SBT模块由于未知原因导致Play崩溃-Play 2.1,scala,playframework,playframework-2.0,sbt,Scala,Playframework,Playframework 2.0,Sbt,他有密码。 我在3个不同的项目中重新创建了这个问题。我不知道怎么了。 在build.scala文件中放入aggregate和dependsOn后,项目在尝试开始播放时会抛出一个错误 [info]从/Users/jgoodwin/.sbt/plugins加载全局插件[info] 从中加载项目定义 /用户/jgoodwin/Development/src/ninjakeyboard/test/tmp/play21多模块演示/项目 [错误]java.lang.ExceptionInInitialize

他有密码。 我在3个不同的项目中重新创建了这个问题。我不知道怎么了。 在build.scala文件中放入aggregate和dependsOn后,项目在尝试开始播放时会抛出一个错误

[info]从/Users/jgoodwin/.sbt/plugins加载全局插件[info] 从中加载项目定义 /用户/jgoodwin/Development/src/ninjakeyboard/test/tmp/play21多模块演示/项目 [错误]java.lang.ExceptionInInitializerError[错误]对 完整日志。项目加载失败:(r)etry,(q)uit,(l)ast,或 (i) 侏儒?q

生成文件

导入sbt.\uu导入密钥。\uuu导入play.Project_

对象应用程序构建扩展了构建{

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

  val appDependencies = Seq(
    // Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean
  )

  val subproject = play.Project(
    "sub-project", appVersion, appDependencies, path = file("modules/MyModule")
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here      
  ).dependsOn(subproject).aggregate(subproject)

}
val appName=“多模块演示”val appVersion= “1.0-SNAPSHOT”//val scalaVersion=“2.10.0”

val appDependencies=Seq( //在此处添加项目依赖项, jdbc, 阿诺姆)

val buildSettings=( 规模规避:=“2.10.0” )

val main=play.Project(appName、appVersion、appDependencies、path= 文件(“web”))。设置( //在此处添加您自己的项目设置).aggregate(testmodule).dependsOn(testmodule)

val testmodule=Project( “测试模块”, 文件(“testmodlue”), 设置=构建设置)

}


尝试创建一个新项目:

  • 运行命令:
    播放新的MyApp
  • 运行
    播放干净的eclipse
  • 制作目录
    模块
    (在MyApp内)
  • 运行命令
    播放新的MyModule
  • 运行命令
    播放干净的eclipse
  • 将控制器重命名为MyModuleCon,并更改路由文件
  • 运行命令
    play clean publish local
  • 将依赖项添加到MyApp Build.scala中:
    “mymodule”%%“mymodule_2.10”%%“1.0-SNAPSHOT”
  • 将主路由重命名为app.routes(因为模块也有路由,但可以删除!)
  • 在主项目运行时:
    playdependencies eclipse
  • 瞧,你有你的子模块,请看我的github:

    只需运行
    play run
    并访问主项目:
    http://localhost:9000
    然后访问子模块:
    http://localhost:9000/module

    我想,这对你来说应该很有用

    编辑:2013-03-27

    将上述配置更改为实际的子项目设置,请执行以下步骤:

  • 在MyApp上运行:
    play clean
  • 更改MyApp的Build.scala文件:
  • 对象应用程序构建扩展了构建{

      val appName         = "MyAppp"
      val appVersion      = "1.0-SNAPSHOT"
    
      val appDependencies = Seq(
        // Add your project dependencies here,
        javaCore,
        javaJdbc,
        javaEbean
      )
    
      val subproject = play.Project(
        "sub-project", appVersion, appDependencies, path = file("modules/MyModule")
      )
    
      val main = play.Project(appName, appVersion, appDependencies).settings(
        // Add your own project settings here      
      ).dependsOn(subproject).aggregate(subproject)
    
    }
    
  • 运行命令:
    play clean eclipse
  • 运行命令:
    play Run
  • 就是这样,您不能访问上述相同的URL。 这可能是因为您的想法无法识别子项目中的类,只需引用MyModule项目作为主项目的引用库,就可以了


    祝你好运!

    尝试创建一个新项目:

  • 运行命令:
    播放新的MyApp
  • 运行
    播放干净的eclipse
  • 制作目录
    模块
    (在MyApp内)
  • 运行命令
    播放新的MyModule
  • 运行命令
    播放干净的eclipse
  • 将控制器重命名为MyModuleCon,并更改路由文件
  • 运行命令
    play clean publish local
  • 将依赖项添加到MyApp Build.scala中:
    “mymodule”%%“mymodule_2.10”%%“1.0-SNAPSHOT”
  • 将主路由重命名为app.routes(因为模块也有路由,但可以删除!)
  • 在主项目运行时:
    playdependencies eclipse
  • 瞧,你有你的子模块,请看我的github:

    只需运行
    play run
    并访问主项目:
    http://localhost:9000
    然后访问子模块:
    http://localhost:9000/module

    我想,这对你来说应该很有用

    编辑:2013-03-27

    将上述配置更改为实际的子项目设置,请执行以下步骤:

  • 在MyApp上运行:
    play clean
  • 更改MyApp的Build.scala文件:
  • 对象应用程序构建扩展了构建{

      val appName         = "MyAppp"
      val appVersion      = "1.0-SNAPSHOT"
    
      val appDependencies = Seq(
        // Add your project dependencies here,
        javaCore,
        javaJdbc,
        javaEbean
      )
    
      val subproject = play.Project(
        "sub-project", appVersion, appDependencies, path = file("modules/MyModule")
      )
    
      val main = play.Project(appName, appVersion, appDependencies).settings(
        // Add your own project settings here      
      ).dependsOn(subproject).aggregate(subproject)
    
    }
    
  • 运行命令:
    play clean eclipse
  • 运行命令:
    play Run
  • 就是这样,您不能访问上述相同的URL。 这可能是因为您的想法无法识别子项目中的类,只需引用MyModule项目作为主项目的引用库,就可以了


    祝你好运!

    我在你的github build.scala中注意到testmodule是在主模块之后声明(并初始化)的,因此在项目加载期间会出现null异常。 我也犯了同样的错误,将模块按正确的顺序放置使其正常工作。
    我刚开始使用Play2和Scala,但我相信使用lazy val也会有所帮助。

    我在github build.Scala中注意到testmodule在主模块之后声明(并初始化),因此在项目加载期间出现空异常。 我也犯了同样的错误,将模块按正确的顺序放置使其正常工作。
    我刚开始玩Play2和Scala,但我相信使用lazy val也会有所帮助。

    可能需要更多信息,因为开放变量太多了。这可能归结为repos不可用,目标和运行时SBT版本之间存在冲突。在加载过程中可以获得完整日志吗?github存储库和ap应用程序就在那里-你可以检查并尝试。变量太多了,我无法提供比实际代码本身更有用的东西。嗯……在这一点上,我可能建议复制现有模块并将其用作“模板”.然后做一个比较,看看你是否遗漏了什么。要对整个报告进行筛选需要做大量的工作。我已经重复了三次这个问题。这只是一只股票