3

プロジェクトの Scala/Scalatra バージョンを次のようにアップグレードしようとしています。

  • スカラ 2.10.1

  • scalatra (および scalatra-scalate、scalatra-scalatest) 2.2.0

sbt 0.11.3 を使用

コードは正常にコンパイルされますが、scalatra を使用する単体テストを実行するとき、TemplateEngineまたは jetty サーバー (同じく scalatra を使用する) を起動するときに、以下のエラーが発生します。

誰もこれを見たことがありますか?どんな提案でも大歓迎です。

ありがとう!

java.lang.NoClassDefFoundError: scala/collection/GenTraversableLike$class at org.fusesource.scalate.TemplateEngine$$anon$1.(TemplateEngine.scala:162) at org.fusesource.scalate.TemplateEngine.sourceDirectoriesForwarder(TemplateEngine.scala:162) org.fusesource.scalate.TemplateEngine.(TemplateEngine.scala:114) で com.springer.core.template.TemplateTestHelper$class.beforeAll(TemplateTestHelper.scala:19) で com.springer.core.template.SupportTemplateTest.beforeAll( SupportTemplateTest.scala:10) で org.scalatest.BeforeAndAfterAll$class.beforeAll(BeforeAndAfterAll.scala:150) で com.springer.core.template.SupportTemplateTest.beforeAll(SupportTemplateTest.scala:10) で

4

2 に答える 2

0

build.sbt または project/build.scala ファイルを確認しないと確信が持てませんが、試してみたいことがいくつかあります。

まず、Scala 2.10.1 で Scalatra 2.2.0 を試している人をまだ知らないので、未知の領域にいることになります。理論的には動作するはずですが、2.10.0 にすばやくダウングレードすると、動作しなくなります。

次に、2.1.x と 2.2.0 の間で Scalate テンプレートのデフォルトの接続に変更がありました。

Scalatra 2.1.0 では、デフォルトの g8 プロジェクト スケルトンに Scalate テンプレート コンパイルが含まれていませんでした。これは、後でコンパイルされたテンプレートを本番環境にデプロイしたいと考える多くの人々にとって混乱の原因でした。その結果、デフォルトの Scalatra 2.2.0 プロジェクト スケルトンにはいくつかの新機能が追加されています。

次のように、コンパイルされたテンプレートを接続します。

   /* wire up the precompiled templates */
  override protected def defaultTemplatePath: List[String] = List("/templates/views")

  override protected def createTemplateEngine(config: ConfigT) = {
    val engine = super.createTemplateEngine(config)
    engine.layoutStrategy = new DefaultLayoutStrategy(engine,
      TemplateEngine.templateTypes.map("/templates/layouts/default." + _): _*)
    engine.packagePrefix = "templates"
    engine
  }

また、 Scalate テンプレート コンパイラも追加します。

addSbtPlugin("com.mojolly.scalate" % "xsbt-scalate-generator" % "0.4.2")

Scala 2.10.1 関連の問題でない場合、プレゼンテーション コンパイラであるかどうかを判断する最も簡単な方法は、最新の g8 を使用して新しい Scalatra 2.2.0 プロジェクト スケルトンを確認 (または生成して使用) することをお勧めします。 .

于 2013-03-26T16:57:26.053 に答える
0

依存関係はビルドでどのように定義されていますか? % の代わりに %% を使用していますか
2.2.x 以降では %% が必要ですが、以前は % でした
これが表示されているエラーの原因である可能性があります

于 2013-03-28T06:18:29.193 に答える