Incremental Build Fails - Cannot Find Implementation
まだ誰も着手していません。
評価
調査の方向性
まず Play アプリケーションでインクリメンタルビルドを再現し、次に Global.scala:41 と併せて InstanceLookup.scala:13 と Wired.scala:10 を調査します。報告されたスタックフレームにあるクラスローダーを比較します。ビルド出力を削除したり完全なリビルドを強制したりせずに、controller クラスを追加または削除すると解決する状態になれば完了です。
索引モデルが issue の本文から書いたものです。
説明
MacWire Version: 2.11-2.2.0
Play! Version: 2.11-2.3.10
The incremental compilation fails when adding/removing a class file with:
java.lang.RuntimeException: Cannot find implementations of class class controllers.FooBarGong!
at com.softwaremill.macwire.InstanceLookup$class.lookupSingleOrThrow(InstanceLookup.scala:13) ~[util_2.11-2.2.0.jar:2.2.0]
at com.softwaremill.macwire.Wired.lookupSingleOrThrow(Wired.scala:10) ~[util_2.11-2.2.0.jar:2.2.0]
at Global$.getControllerInstance(Global.scala:41) ~[na:na]
...
Resolution succeeds provided I delete the build output folder do a complete project rebuild.
Upon further investigation, I have learned of an inconsistent classloader state between stack frames as indicated by calling the following from the subject stack frame:
((ClassLoader)this.getClass().getClassLoader()).loadClass("controllers.FooBarGong")
Lookup succeeds from stack frame Global$.getControllerInstance(Global.scala:41) ~[na:na] (class loader ReloadableClassLoader(v1)) but fails to find the class from the deeper stack frame com.softwaremill.macwire.Wired.lookupSingleOrThrow(Wired.scala:10) (class loader PlayDependencyClassLoader)
The call site is fairly simple:
package modules
import play.api.Play
import play.api.libs.ws.WS
import controllers._
import com.softwaremill.macwire._
import services._
object ApplicationModule extends ControllerModule with ServiceModule
trait ControllerModule extends ServiceModule {
import Play.current
lazy val fooBarGongController = wire[FooBarGong]
}
- 主要言語
- Scala
- スター
- 1.3k
- フォーク
- 77
- 平均マージ
- 21時間 6分
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
softwaremill/macwire のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
softwaremill/macwire#412 · コメント 3 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
softwaremill/macwire#391 · コメント 1 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
softwaremill/macwire#301 · コメント 2 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
softwaremill/macwire#281 · コメント 5 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
softwaremill/macwire#278 · コメント 3 件 ·
softwaremill/macwire の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
Fix Math.ceilDiv wrong result for exact positive divisions対応中かも @pamod-madubashana が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
scala-native/scala-native#5094 ·
メンテナーはふだん 1 日以内に返信
-
dependencies tech-debt
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 2 日以内に返信
-
"Show threat" doesn't show the evaluation of the threat対応中かも @Zinkelburger が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
lichess-org/lila#22008 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
C21 publishes `reactivemongo/core/SSL` as Java 23 bytecode — TLS connections fail on any JDK < 23オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
ReactiveMongo/ReactiveMongo#1520 ·
メンテナーはふだん 1 日以内に返信