首页 文章

播放项目中的简单SBT模块导致播放崩溃的原因不明 - 播放2.1

提问于
浏览
1

https://github.com/jasongoodwin/play21-multimodule-demo有代码 . 我've recreated this problem on 3 different projects. I don'知道怎么了 . 一旦你将aggregate和dependsOn放在build.scala文件中,项目在尝试开始播放时就会抛出错误 .

[info]从/Users/jgoodwin/.sbt/plugins [info]加载全局插件从/ Users / jgoodwin / Development / src / ninjakeyboard / test / tmp / play21-multimodule-demo / project [error] java加载项目定义.lang.ExceptionInInitializerError [error]使用'last'作为完整日志 . 项目加载失败:(r)etry,(q)uit,(l)ast,或(i)gnore? q

构建文件

import sbt._ import Keys._ import play.Project._ object ApplicationBuild extends Build {val appName =“multimodule-demo”val appVersion =“1.0-SNAPSHOT”// val scalaVersion =“2.10.0”val appDependencies = Seq (//在这里添加项目依赖项,jdbc,anorm)val buildSettings =(scalaVersion:=“2.10.0”)val main = play.Project(appName,appVersion,appDependencies,path = file(“web”)) . settings (//在这里添加你自己的项目设置).aggregate(testmodule).dependsOn(testmodule)val testmodule = Project(“testmodule”,file(“testmodlue”),settings = buildSettings)}

2 回答

  • 3

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

  • 1

    尝试创建一个新项目:

    • 运行命令: play new MyApp

    • 运行 play clean eclipse

    • 制作dir modules (在MyApp内部)

    • 运行命令 play new MyModule

    • 运行命令 play clean eclipse

    • 将控制器重命名为MyModuleCon,并更改routes文件

    • 运行命令 play clean publish-local

    • 添加到MyApp Build.scala依赖项: "mymodule" % "mymodule_2.10" % "1.0-SNAPSHOT"

    • 将主路由重命名为app.routes(因为模块也有路由,但可以删除!)

    • 在主项目运行中: play dependencies eclipse

    瞧,你有你的子模块,请看我的github:https://github.com/adis-me/PlayModuleExample

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

    我认为这应该可以帮到你!

    EDIT: 2013-03-27

    将上述配置更改为实际的子项目设置,请按照下列步骤操作:

    • 在MyApp上运行: play clean

    • 更改MyApp的Build.scala文件:

    object ApplicationBuild extends Build {

    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

    就是这样,你不能访问上面提到的相同网址 . 可能是您的想法无法识别子项目中的类,只需将MyModule项目作为主项目的引用库引用,您就可以了 .

    祝好运!

相关问题