«org.fusesource.scalate.Исключение TemplateException: нарушение ограничений загрузки» при использовании встроенного причала SBTs и scalatra / scalate

#scala #jetty #sbt #scalate #scalatra

#scala #jetty #sbt #масштабировать #scalatra

Вопрос:

Я начал получать эту ошибку вчера при использовании встроенной задачи ‘jetty-run’ в SBT. Я вернул свой код к предыдущей версии, и это все еще происходит.

Обратите внимание, что я упаковал приложение и развернул его в реальном экземпляре jetty, и я не получаю ошибку. Я начал получать эту ошибку после добавления некоторых зависимостей в мой проект (могут быть связаны, а могут и не быть связаны), но с тех пор удалил их.

Я попытался «очистить» ‘clean-lib’ и ‘clean-cache’, а также очистить мои каталоги ~ /.m2/ repository, ~ /.ivy2/cache и project /boot.

У кого-нибудь есть другие идеи?

Строка, которая разрывается, является:

TemplateEngine.layout(uri, Map("flash" -> flash))

Ниже приведена дополнительная трассировка стека:

org.fusesource.scalate.Исключение TemplateException: нарушение ограничений загрузчика: при разрешении метода "scala.tools.nsc.Settings.(Lscala/Function1;)V " загрузчик класса (экземпляр sbt / jetty/LazyJettyRun7$ SbtWebAppLoader $ 1) текущего класса org/fusesource/scalate/support/ScalaCompiler) и загрузчик класса (экземпляр java / net /URLClassLoader) для разрешенного класса, scala / tools / nsc /Settings, имеют разные объекты класса для тип scala/Function1, используемый в подписи 
 в org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:775)
 в org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:637)
 в org.fusesource.scalate.TemplateEngine.Поднятое дерево 1 $ 1(TemplateEngine.scala:368)
 в org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:362)
 в org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:420) 
 в org.fusesource.scalate.TemplateEngine.макет (TemplateEngine.scala:521)
 при com.ford.testbuilder.web.AppDefaults$class.com$ford$testbuilder$web$AppDefaults$$render(SharedTraits.scala:79) 
 в com.ford.testbuilder.web.AppDefaults$$anonfun$6.применить(SharedTraits.scala:52)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2$$anonfun$6.apply(ScalatraKernel.scala:133)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2$$anonfun$6.apply(ScalatraKernel.scala:133)
 в scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61) 
 в scala.collection.immutable.List.foreach(список.scala:45) 
 в scala.collection.generic.Обходимый сервер $class.foreach(обходимый сервер.scala:44) 
 в scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:42) 
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(ScalatraKernel.scala:133)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ScalatraKernel.scala:121)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ScalatraKernel.scala:121)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ScalatraKernel.scala:121)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply(ScalatraKernel.scala:121)
 при org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply(ScalatraKernel.scala:121)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 в org.scalatra.ScalatraKernel$$anonfun$обработайте$1.примените$ mcV $ sp(ScalatraKernel.scala:120)
 в org.scalatra.ScalatraKernel$$anonfun$обработайте$1.применить(ScalatraKernel.scala:120)
 в org.scalatra.ScalatraKernel$$anonfun$обработайте$1.применить(ScalatraKernel.scala:120)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 в org.scalatra.ScalatraKernel$class.handle(ScalatraKernel.scala:119)
 при com.ford.testbuilder.web.LoginServlet.org$scalatra$CookieSupport$$super$handle(LoginServlet.scala:10) 
 в org.scalatra.CookieSupport$$anonfun$обрабатывает$1$$anonfun$применить$mcV$ sp $1.применить $ mcV $ sp(CookieSupport.scala: 102)
 в org.scalatra.CookieSupport$$anonfun$обрабатывает$1$$anonfun$применить$mcV $ sp $1.применить(CookieSupport.scala: 102)
 в org.scalatra.CookieSupport$$anonfun$обрабатывает$1$$anonfun$применить$mcV $ sp $1.применить(CookieSupport.scala: 102)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 в org.scalatra.CookieSupport$$anonfun$обрабатывает$ 1.примените$mcV $ sp(CookieSupport.scala: 101) 
 в org.scalatra.CookieSupport$$anonfun$обрабатывает $1.применить(CookieSupport.scala:101) 
 в org.scalatra.CookieSupport$$anonfun$обрабатывает $1.применить(CookieSupport.scala:101)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 в org.scalatra.CookieSupport$class.handle(CookieSupport.scala:100)
 при com.ford.testbuilder.web.LoginServlet.org$scalatra$FlashMapSupport$$super$handle(LoginServlet.scala:10) 
 в org.scalatra.FlashMapSupport$$anonfun$обрабатывает $ 1.примените$ mcV $ sp(FlashMap.scala: 101) 
 в org.scalatra.FlashMapSupport$$anonfun$обрабатывает $ 1.применить (FlashMap.scala:100)
 в org.scalatra.FlashMapSupport$$anonfun$обрабатывает $ 1.применить (FlashMap.scala:100)
 в scala.util.DynamicVariable.withValue(DynamicVariable.scala:71) 
 в org.scalatra.FlashMapSupport$class.handle(FlashMap.scala:100)

Ответ №1:

Я понял это после попытки новой проверки на чужом компьютере (который работал нормально) и сравнения путей к классам. Я обнаружил, что у меня были оба scala-library-2.8.1.jar а также scala-library.jar в моем пути к классу.

Это было вызвано следующей строкой в файле моего проекта:

переопределить def filterScalaJars = false

Потратил большую часть дня на это: (