-1
我使用下面的代碼模式匹配的PrivateKey
一個實例:模式匹配失敗的第二次嘗試
import java.security.interfaces.{RSAPrivateKey, RSAPublicKey}
import java.security.{PrivateKey, PublicKey}
object ClientPrivateKey {
def apply(privateKey: PrivateKey) = privateKey match {
case k: RSAPrivateKey ⇒ RSAClientPrivateKey(k)
case k: EdDSAPrivateKey ⇒ EDCClientPrivateKey(k)
}
}
val pk: PrivateKey = ....
ClientPrivateKey(pk)
與sbt ~test
運行測試時我得到一個怪異的行爲。
[info] scala.MatchError: [email protected] (of class net.i2p.crypto.eddsa.EdDSAPrivateKey)
[info] at com.advancedtelematic.libtuf.data.ClientDataType$ClientPrivateKey$.apply(ClientDataType.scala:39)
[info] at com.advancedtelematic.tuf.keyserver.daemon.KeyGenerationOp$$anonfun$saveToVault$1.apply(KeyGeneratorLeader.scala:122)
[info] at com.advancedtelematic.tuf.keyserver.daemon.KeyGenerationOp$$anonfun$saveToVault$1.apply(KeyGeneratorLeader.scala:121)
[info] at scala.concurrent.Future$$anonfun$traverse$1.apply(Future.scala:576)
[info] at scala.concurrent.Future$$anonfun$traverse$1.apply(Future.scala:575)
[info] at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
[info] at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
哪個是奇怪,因爲net.i2p.crypto.eddsa.EdDSAPrivateKey
匹配被匹配的對象的類型:在測試通過,在隨後的嘗試,而無需重新啓動SBT第一次運行,與所述測試失敗。
什麼可以干擾這種模式匹配?
似乎是這種情況。 'java.lang.Exception:不同的類加載器?假假'我該如何解決這個問題? – simao
不能給你一個簡單的答案。我想你的應用程序正在像一個Web服務器或OSGi的內部管理多個類加載器的容器中運行。 – ghik
不是真的,只是一個演員的阿卡應用程序,這似乎發生在這個類,所以它很奇怪。 – simao