Scala的Play框架:编译错误[类型应用程序不是程序包控制器的成员
发布时间:2020-12-16 09:41:47 所属栏目:安全 来源:网络整理
导读:我尝试在书中编写一个scala示例:“Play for Scala”,但在Play控制台上收到以下编译错误: C:Playexpch6_implicitsactivator run[info] Loading project definition from C:Playexpch6_implicitsproject[info] Set current project to ch6_implicits
我尝试在书中编写一个scala示例:“Play for Scala”,但在Play控制台上收到以下编译错误:
C:Playexpch6_implicits>activator run [info] Loading project definition from C:Playexpch6_implicitsproject [info] Set current project to ch6_implicits (in build file:/C:/Play/exp/ch6_implicits/) --- (Running the application,auto-reloading is enabled) --- [info] p.a.l.c.ActorSystemProvider - Starting application default Akka system: application [info] p.c.s.NettyServer$ - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started,use Ctrl+D to stop and go back to the console...) [info] Compiling 13 Scala sources and 1 Java source to C:Playexpch6_implicitstargetscala-2.11classes... [error] C:Playexpch6_implicitsconfroutes:6: type Application is not a member of package controllers [error] GET / controllers.Application.index [error] C:Playexpch6_implicitsconfroutes:7: type Shop is not a member of package controllers [error] GET /catalog controllers.Shop.catalog [error] C:Playexpch6_implicitsconfroutes:6: type Application is not a member of package controllers [error] GET / controllers.Application.index [error] C:Playexpch6_implicitsconfroutes:7: type Shop is not a member of package controllers [error] GET /catalog controllers.Shop.catalog [error] C:Playexpch6_implicitsconfroutes:6: type Application is not a member of package controllers [error] GET / controllers.Application.index [error] C:Playexpch6_implicitsconfroutes:7: type Shop is not a member of package controllers [error] GET /catalog controllers.Shop.catalog [error] 6 errors found [error] (compile:compileIncremental) Compilation failed [error] application - ! @6mafk6inc - Internal server error,for (GET) [/products/new] -> play.sbt.PlayExceptions$CompilationException: Compilation error[type Application is not a member of package controllers] at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na] at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na] at scala.Option.map(Option.scala:145) ~[scala-library-2.11.6.jar:na] at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:49) ~[na:na] at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:44) ~[na:na] at scala.Option.map(Option.scala:145) ~[scala-library-2.11.6.jar:na] at play.sbt.run.PlayReload$.taskFailureHandler(PlayReload.scala:44) ~[na:na] at play.sbt.run.PlayReload$.compileFailure(PlayReload.scala:40) ~[na:na] at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17) ~[na:na] at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17) ~[na:na] Application.scala是: package controllers import play.api._ import play.api.mvc._ // We extend the 'WithCart' trait,so we have an implicit conversion from RequestHeader to Cart object Application extends Controller with WithCart { def index = Action { implicit request => // The index template takes an implicit Cart,which is not available. // However,the WithCart trait has an implicit conversion from // RequestHeader to Cart,and we do have an implicit RequestHeader // here,because `request` is a Request,which extends RequestHeader. Ok(views.html.index()) } def contact = Action { implicit request => Ok(views.html.contact()) } } Shop.scala是 package controllers import play.api._ import play.api.mvc._ import models._ object Shop extends Controller with WithCart { def catalog() = Action { implicit request => val products = ProductDAO.list Ok(views.html.products.catalog(products)) } } 路由文件是: # Routes # This file defines all application routes (Higher priority routes first) # ~~~~ # Home page GET / controllers.Application.index GET /catalog controllers.Shop.catalog GET /contact controllers.Application.contact # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public",file) Play Framework是2.4.0,大概说: [ch6_implicits] $ about [info] This is sbt 0.13.8 [info] The current project is {file:/C:/Play/exp/ch6_implicits/}root 1.0-SNAPSHOT [info] The current project is built against Scala 2.11.6 [info] Available Plugins: sbt.plugins.IvyPlugin,sbt.plugins.JvmPlugin,sbt.plugins.CorePlugin,sbt.plugins.JUnitXmlReportPlugin,play.sbt.Play,play.sbt.PlayAkkaHttpServer,play.sbt.PlayJava,play.sb t.PlayLayoutPlugin,play.sbt.PlayNettyServer,play.sbt.PlayScala,play.sbt.routes.RoutesCompiler,play.twirl.sbt.SbtTwirl,com.typesafe.sbt.SbtNativePackager,com.typesafe.sbt.packager.archetypes.Akka AppPackaging,com.typesafe.sbt.packager.archetypes.JavaAppPackaging,com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging,com.typesafe.sbt.packager.archetypes.jar.ClasspathJarPlugin,com.types afe.sbt.packager.archetypes.jar.LauncherJarPlugin,com.typesafe.sbt.packager.debian.DebianDeployPlugin,com.typesafe.sbt.packager.debian.DebianPlugin,com.typesafe.sbt.packager.debian.JDebPackaging,c om.typesafe.sbt.packager.docker.DockerPlugin,com.typesafe.sbt.packager.jdkpackager.JDKPackagerDeployPlugin,com.typesafe.sbt.packager.jdkpackager.JDKPackagerPlugin,com.typesafe.sbt.packager.linux.Li nuxPlugin,com.typesafe.sbt.packager.rpm.RpmDeployPlugin,com.typesafe.sbt.packager.rpm.RpmPlugin,com.typesafe.sbt.packager.universal.UniversalDeployPlugin,com.typesafe.sbt.packager.universal.Univer salPlugin,com.typesafe.sbt.packager.windows.WindowsDeployPlugin,com.typesafe.sbt.packager.windows.WindowsPlugin,com.typesafe.sbt.web.SbtWeb,com.typesafe.sbt.jse.SbtJsEngine,com.typesafe.sbt.jse.S btJsTask,com.typesafe.sbt.coffeescript.SbtCoffeeScript,com.typesafe.sbt.less.SbtLess,com.typesafe.sbt.jshint.SbtJSHint,com.typesafe.sbt.rjs.SbtRjs,com.typesafe.sbt.digest.SbtDigest,com.typesafe. sbt.mocha.SbtMocha,com.typesafe.sbteclipse.plugin.EclipsePlugin [info] sbt,sbt plugins,and build definitions are using Scala 2.10.4 [ch6_implicits] $ 而Java版本是: C:Playexpch6_implicits>java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode) C:Playexpch6_implicits>javac -version javac 1.8.0_45 任何想法有什么问题和如何解决这个问题? 到目前为止,其他示例已经在我的环境中编译并运行没有错误。 感谢您的支持! 解决方法
播放2.4,默认情况下,生成依赖注入的路由器,与以前不同,当它使用静态路由器时。您有两个选项,从build.sbt中删除routesGenerator行,因此play将生成一个静态路由器,或者(更好地)使您的控制器类而不是对象,并使用依赖注入。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |