Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 代码中看不到旋转模板(喷洒应用程序)_Scala_Sbt_Spray_Twirl - Fatal编程技术网

Scala 代码中看不到旋转模板(喷洒应用程序)

Scala 代码中看不到旋转模板(喷洒应用程序),scala,sbt,spray,twirl,Scala,Sbt,Spray,Twirl,我有一些配置问题,我看不出来。我遵循了最新自述文件中提供的说明,但是编译器没有定义html包 我已经将sbt twirl插件包含在project/plugins.sbt文件中 addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.3") 在项目/Build.scala中,我启用了插件 lazy val root = Project(id = "proj", base = file(".")) .enablePlugins(play

我有一些配置问题,我看不出来。我遵循了最新自述文件中提供的说明,但是编译器没有定义
html

  • 我已经将
    sbt twirl
    插件包含在
    project/plugins.sbt
    文件中

    addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.3")
    
  • 项目/Build.scala
    中,我启用了插件

     lazy val root  = Project(id = "proj", base = file("."))
       .enablePlugins(play.twirl.sbt.SbtTwirl)
       .settings(rootSettings: _*)
    
  • 我已经将
    page.scala.html
    放在
    src/main/twirl
    子目录中(直接或使用
    com/somethin/cool
    路径)

  • 现在,如果我试图导入
    html
    包(或
    com.somethin.cool.html
    ),编译器会抱怨它未定义。我可以使用“twirlCompile”命令编译模板,它们可以在
    target
    子目录中正确生成,但它们对主项目不可见

    注意:这不是PlayFramework项目
    • Scala:2.10.4
    • sbt:0.13.6
    • 旋转:1.0.3

    在sbt中显式添加非托管源目录可能会有所帮助

    unmanagedSourceDirectories in Compile += baseDirectory.value / "target" / "yourTwirlGeneratedSources" 
    
    然而,这当然不是必要的!我想在运行
    compile
    时,对
    twirlcomile
    的依赖关系也不会得到解决,并且不会从twirl文件生成更新的源代码


    您是否尝试过使用以前的twirl+sbt组合?

    我同样在非播放项目中使用twirl

    如果您将文件放在
    src/main/com/somethin/cool
    中,那么您应该期望在
    com.somethin.cool.html.page
    中找到生成的类

    如果您将文件放在
    src/main/twirl/
    中,那么您应该期望在
    twirl.html.page

    Twirl编译器查看它找到的文件,并将“html”(扩展名实际上可能是“txt”或“json”或…)目录放在文件最长的公共子路径下。那么,假设你有:

    src/main/com/somethin/cool/page1.scala.html
    src/main/twirl/page2.scala.html
    
    然后文件的公共最长子路径是src/main(即类路径的根)。然后您将在以下位置获得这些课程:

    html.com.somethin/cool/page1
    html.twirl.page2
    
    现在,为了解决“编译器抱怨它未定义”的问题,您可以这么说

    如果你是说sbt运行的实际Scala编译器找不到它,我从来没有遇到过这个问题。生成的源文件和.class文件位于
    target/scala_2.10/twirl/main
    下的路径中。在这种情况下,您可能需要更清楚地了解编译器的抱怨和编译类路径

    但是,如果您的IDE无法识别源文件,则需要添加目录
    target/scala_2.10/twirl/main
    ,作为项目使用的源目录之一

    我对Twirl使用的另一个问题是IntelliJ IDEA 14 IDE并不真正支持Twirl编译器,至少在Play项目之外不支持。每当我更新Twirl模板时,我总是要用sbt而不是IntellijIDEA的内置编译器来编译它。JetBrains的人告诉我,他们正在对此进行修复(我已经向他们记录了一个问题)

    更新(12/14/14):我记录了JetBrains的问题。它的测试用例是