如何调试Scala Future
中的代码?
我正在使用IntelliJ .
除了记录一切,我不知道如何 .
有关如何进行的任何建议?
EDIT1:
这是我得到的错误:
java.lang.IllegalAccessError:尝试访问字段org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ apply $ 3.concepts $ 1 from class org.iadb .poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 3 $ GeneratedEvaluatorClass $ 3 $ 1 at org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $申请$ 1 $$ anonfun $申请$ 2 $$ anonfun $申请$ 3 $ GeneratedEvaluatorClass $ 3 $ 1.invoke(FileToCompile0.scala:173)org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ apply $ 3.apply(RelevantConceptsRecommendationService.scala:169)org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ a nonfun $ apply $ 1 $$ anonfun $ apply $ 3.apply(RelevantConceptsRecommendationService.scala:166)at scala.concurrent.impl.Future $ PromiseCompletingRunnable.liftedTree1 $ 1(Future.scala:24)at scala.concurrent . impl.Future $ PromiseCompletingRunnable.run(Future.scala:24)at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)at akka.dispatch.ForkJoinExecutorConfigurator $ AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)at scala.concurrent .forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)at scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339)at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)java.lang.NoSuchFieldError:doc $ 1 at org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ $申请3个$ GeneratedEvaluatorClass $ 4 $ 1.invoke(FileToCompil e1.scala:173)at org.iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ apply $ 3.apply(RelevantConceptsRecommendationService.scala:169)at org . iadb.poolpartyconnector.conceptsrecommendation.RelevantConceptsRecommendationServicePoolPartyImpl $$ anonfun $ 2 $$ anonfun $ apply $ 1 $$ anonfun $ apply $ 2 $$ anonfun $ apply $ 3.apply(RelevantConceptsRecommendationService.scala:166)at scala.concurrent.impl.Future $ PromiseCompletingRunnable.liftedTree1 $ 1(Future.scala:24)at scala.concurrent.impl.Future $ PromiseCompletingRunnable.run(Future.scala:24)at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)at akka.dispatch.ForkJoinExecutorConfigurator $ AkkaForkJoinTask .exec(AbstractDispatcher.scala:397)scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339)scala.concurrent . forkjoin.ForkJoinPool.runWorker(对于kJoinPool.java:1979)scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
我的代码:
def filterResultsWithExtractionSettings(conceptResults: ConceptResults): ConceptResults = {
import system.dispatcher
val mylist: Iterable[Future[List[Concept]]] = for (fieldSettings <- fieldSettingsList if fieldSettings.maxConceptsExtraction > 0; doc <- conceptResults.document; concepts <- doc.concepts) yield {
Future {
val schemefiltered = concepts.withFilter(e => e.conceptSchemes.contains(fieldSettings.scheme)).flatMap(e=> List(e))
schemefiltered.size match {
case e if e > fieldSettings.maxConceptsExtraction => schemefiltered.take(fieldSettings.maxConceptsExtraction)
case _ => schemefiltered
}
}
}
val res = Await.result(Future.sequence(mylist), Duration.Inf).flatten.toList
val distinctRes = res.distinct
conceptResults.copy(document = Some(conceptResults.document.get.copy(concepts = Some(distinctRes))))
}
1 回答
由于您使用的是IntelliJ,因此可以在Future中添加断点 . 您可以通过单击要断点所在的文本行左侧的装订线来实现 .
https://www.jetbrains.com/idea/help/creating-breakpoints.html