1

https://github.com/jasongoodwin/play21-multimodule-demoにコードがあります。この問題を 3 つの異なるプロジェクトで再現しました。どうしたのかわからない。build.scala ファイルに集約と dependsOn を配置すると、再生を開始しようとすると、プロジェクトはエラーをスローします。

[情報] /Users/jgoodwin/.sbt/plugins からグローバル プラグインをロードしています [情報] /Users/jgoodwin/Development/src/ninjakeyboard/test/tmp/play21-multimodule-demo/project からプロジェクト定義をロードしています [エラー] java. lang.ExceptionInInitializerError [エラー] 完全なログには「last」を使用してください。プロジェクトの読み込みに失敗しました: (r)etry、(q)uit、(l)ast、または (i)gnore? q

ビルドファイル

import sbt._ import Keys._ import play.Project._

オブジェクト ApplicationBuild はビルドを拡張します {

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 )

}

4

2 に答える 2

3

あなたの github build.scala で、メイン モジュールの後に testmodule が宣言 (および初期化) されていることに気付きました。したがって、プロジェクトの読み込み中に null 例外が発生します。私は同じ間違いを犯しましたが、モジュールを正しい順序で配置すると機能しました。Play2 と Scala を使い始めたばかりですが、lazy val の使用も役立つと思います。

于 2013-06-15T08:31:19.840 に答える
1

新しいプロジェクトを作成してみてください:

  1. コマンドを実行します。play new MyApp
  2. 走るplay clean eclipse
  3. Make dir modules(MyApp内)
  4. コマンドを実行play new MyModule
  5. コマンドを実行play clean eclipse
  6. コントローラーの名前を MyModuleCon に変更し、ルート ファイルを変更します。
  7. コマンドを実行play clean publish-local
  8. MyApp Build.scala に依存関係を追加します。"mymodule" % "mymodule_2.10" % "1.0-SNAPSHOT"
  9. メイン ルートの名前を app.routes に変更します (削除することはできますが、モジュールにもルートがあるためです!)
  10. メイン プロジェクトで次を実行します。play dependencies eclipse

サブモジュールができました。私の github を参照してください: https://github.com/adis-me/PlayModuleExample

play runメイン プロジェクトを実行してアクセスhttp://localhost:9000してから、サブモジュール: にアクセスしてくださいhttp://localhost:9000/module

これでうまくいくはずです。

編集: 2013-03-27

上記の構成を実際のサブ プロジェクトのセットアップに変更するには、次の手順に従います。

  1. MyApp で実行:play clean
  2. MyApp の Build.scala ファイルを変更します。

オブジェクト ApplicationBuild はビルドを拡張します {

  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)

}
  1. コマンドを実行します。play clean eclipse
  2. コマンドを実行します。play run

それだけです。上記と同じ URL にアクセスすることはできません。あなたのアイデアがサブプロジェクトのクラスを認識していない可能性があります。MyModule プロジェクトをメイン プロジェクトの参照ライブラリとして参照するだけで問題ありません。

幸運を!

于 2013-03-27T22:21:38.460 に答える