GithubHelp home page GithubHelp logo

codelytv / scala-ddd-example Goto Github PK

View Code? Open in Web Editor NEW
131.0 11.0 283.0 304 KB

λ🎯 Hexagonal Architecture + DDD + CQRS applied in Scala using Akka HTTP

Home Page: https://pro.codely.tv/library/api-http-con-scala-y-akka/66747/about/

License: MIT License

Scala 100.00%
scala akka-http akka akka-http-testkit scala-test sbt http-api codelytv logback logstash

scala-ddd-example's Introduction

CodelyTV Scala HTTP API

License Build Status Coverage Status

Project showing up how you could implement a HTTP API with Scala.

This is the first iteration of the project where you will find a very Object Oriented approach. We've followed the Ports & Adapters (or Hexagonal Architecture) Software Architecture using traits as the domain contracts/ports in order to be implemented by the infrastructure adapters.

Contents

Endpoints

One of the goals of this project is to serve as an example for the course on Scala HTTP API (Spanish) illustrating how to implement several concepts you would commonly find in any production application. In order to accomplish so, we have implemented the following 5 endpoints:

  • GET /status: Application status health check.
  • POST /videos: Create new video inserting it into the database and publishing the video_created domain event to the message queue.
  • GET /videos: Obtain all the system videos.
  • POST /users: Create new user inserting it into the database and publishing the user_registered domain event to the message queue.
  • GET /users: Obtain all the system users.

Libraries and implementation examples

Feature Library Implementation examples
Build tool SBT Dependencies, configuration & build.sbt
Style formatting ScalaFmt Rules
HTTP server Akka HTTP Routes definition, server implementation,
Video POST controller & its corresponding acceptance test
JSON marshalling Spray JSON User & User attributes marshallers
Database integration Doobie Video repository & its corresponding integration test
Domain events publishing Akka RabbitMQ Publisher implementation & its corresponding integration test
Infrastructure management Docker Docker Compose definition
Logging ScalaLogging
+ Logback
+ Logstash encoder
Logback configuration, logger implementation & its corresponding integration test
Command line command Scopt Database tables creation script
Distribution/deploy SBT Native packager Build & deploy instructions
Continuous Integration Travis CI Travis definition
Acceptance tests Akka HTTP TestKit Previously specified acceptance tests
Integration tests ScalaTest Previously specified integration tests
Unit tests ScalaTest
+ ScalaMock
Video creator use case test
Continuous Integration Travis CI
+ SBT Coveralls
Travis definition

Environment setup

Install the needed tools

  1. Clone this repository: git clone https://github.com/CodelyTV/cqrs-ddd-scala-example.git cqrs-ddd-scala-example
  2. Download and install Docker compose. We'll need it in order to run all the project infrastructure.
  3. Download and install SBT

Prepare the application environment

  1. Copy the Docker environment variables config file and tune it with your desired values: cp .env.dist .env
  2. Start Docker and bring up the project needed containers: docker-compose up -d
  3. Create the database tables in your Docker MySQL container: sbt createDbTables

Run the tests and start the HTTP server

  1. Enter into the SBT console: sbt
  2. Run the tests: t
  3. Start the local server: app/run mooc-api (if you run the app from outside SBT: sbt "app/run mooc-api")
  4. Request for the server status: curl http://localhost:8080/status
  5. Take a look at the courses related to this repository (Spanish) just in case you're interested into them!

Pre-push Git hook

There's one Git hook included. It's inside the doc/hooks folder and it will run the prep SBT task before pushing to any remote.

This prep task is intended to run all the checks you consider before pushing. At this very moment, it try to compile and check the code style rules with ScalaFmt.

You can define what this task does modifying the prep task in the build.sbt file. We like the approach of just running 1 single SBT task as the hook instead of multiple tasks because it's more efficient (the hook doesn't have to run SBT multiple times), and also because this way we can control the pre push tasks with the SBT alias defined at the build.sbt without altering the hooks.

In order to install this hook, just cd doc/hooks and run ./install-hooks.sh.

Logs

We've added a logging mechanism thanks to logback and logstash-logback-encoder in order to:

  • Output the log records through the standard output channel (usually, your terminal :P)
  • Store the log records in JSON format in a log file available at var/log/app_log.json
  • Compress the historical log files into var/log/app_log-%d{yyyy-MM-dd}.gz files
  • Delete compressed historical logs older than 10 days

If you want more information on the logging policies and appenders, take a look at the logback.xml.

Deploy

We use SBT Native Packager in order to package the app in single Jar file that you can execute.

  1. Create the universal package: sbt universal:packageBin.
  2. Extract the generated zip: unzip target/universal/codelytv-cqrs-ddd-scala-example-1.0.zip -d ~/var/www/ which will contain:
    • bin/: All the executable binaries of our main classes in Unix and Windows (bat) format
    • lib/: All the project dependencies jar files.
  3. Run the main app binary:
    • Without specifying any parameters (OK for this example app): ~/var/www/codelytv-cqrs-ddd-scala-example-1.0/bin/codelytv-cqrs-ddd-scala-example
    • Specifying parameters for the JVM: ~/var/www/codelytv-cqrs-ddd-scala-example-1.0/bin/codelytv-cqrs-ddd-scala-example -Dconfig.resource=application/$CONFIG_PATH
    • Specifying application parameters: ~/var/www/codelytv-cqrs-ddd-scala-example-1.0/bin/codelytv-cqrs-ddd-scala-example -Dconfig.resource=application/$CONFIG_PATH -- -appParam

About

This hopefully helpful utility has been developed by CodelyTV and contributors.

We'll try to maintain this project as simple as possible, but Pull Requests are welcome!

License

The MIT License (MIT). Please see License for more information.

scala-ddd-example's People

Contributors

javiercane avatar rgomezcasas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scala-ddd-example's Issues

Error on stb createDbTable

Hi!

When I tried to run stb createDbTable, happen this error

$ sbt createDbTables
[info] Loading settings for project scala-ddd-example-build from sbt-scalafmt.sbt,sbt-scoverage.sbt,sbt-assembly.sbt ...
[info] Loading project definition from /Users/alejandro/Dev/Estudios/Arquitectura/Exagonal/scala-ddd-example/project
[info] Compiling 2 Scala sources to /Users/alejandro/Dev/Estudios/Arquitectura/Exagonal/scala-ddd-example/project/target/scala-2.12/sbt-1.0/classes ...
[error] ## Exception when compiling 2 sources to /Users/alejandro/Dev/Estudios/Arquitectura/Exagonal/scala-ddd-example/project/target/scala-2.12/sbt-1.0/classes
[error] java.lang.RuntimeException: /packages cannot be represented as URI
[error] java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:175)
[error] scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] scala.collection.Iterator.foreach(Iterator.scala:937)
[error] scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
[error] java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.base/java.lang.reflect.Method.invoke(Method.java:567)
[error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] sbt.std.Transform$$anon$4.work(System.scala:67)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] sbt.Execute.work(Execute.scala:278)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] java.base/java.lang.Thread.run(Thread.java:831)
[error]
[error] java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:175)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] at scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] at scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] at scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] at scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] at scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] at scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] at scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] at scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] at scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] at xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:567)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] at sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] at java.base/java.lang.Thread.run(Thread.java:831)
[error] Caused by: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:175)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] at scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] at scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] at scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] at scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] at scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] at scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] at scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] at scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] at scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] at xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:567)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] at sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] at java.base/java.lang.Thread.run(Thread.java:831)
[error] (Compile / compileIncremental) java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

Create RabbitMQ infrastructure on the fly

We have to take into account 2 different scenarios:

  • Creating the infrastructure needed for testing purposes such as the RabbitMqMessagePublisherShould test.
  • Creating the infrastructure needed in order to publish all the different Domain Events. Here we could implement some kind of EventQueuesCreator script like the DbTablesCreator one.

sbt createDbTables not working

Hi,

I've just started the Hexagonal Arquitecture course and when trying to follow the steps to get the scala forked environment on, the sbt createDbTables command just explode. 😱

What should I do now?

❯ sbt createDbTables
[info] Loading settings for project scala-ddd-example-build from sbt-scalafmt.sbt,sbt-scoverage.sbt,sbt-assembly.sbt ...
[info] Loading project definition from /Users/david/CodelyTv/scala-ddd-example/project
[info] Updating ProjectRef(uri("file:/Users/david/CodelyTv/scala-ddd-example/project/"), "scala-ddd-example-build")...
[info] Done updating.
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] Compiling 2 Scala sources to /Users/david/CodelyTv/scala-ddd-example/project/target/scala-2.12/sbt-1.0/classes ...
[error] ## Exception when compiling 2 sources to /Users/david/CodelyTv/scala-ddd-example/project/target/scala-2.12/sbt-1.0/classes
[error] java.lang.RuntimeException: /packages cannot be represented as URI
[error] java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:176)
[error] scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] scala.collection.Iterator.foreach(Iterator.scala:937)
[error] scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[error] java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.base/java.lang.reflect.Method.invoke(Method.java:564)
[error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] sbt.std.Transform$$anon$4.work(System.scala:67)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] sbt.Execute.work(Execute.scala:278)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] java.base/java.lang.Thread.run(Thread.java:832)
[error]
[error] java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:176)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] at scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] at scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] at scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] at scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] at scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] at scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] at scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] at scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] at scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] at xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] at sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] at java.base/java.lang.Thread.run(Thread.java:832)
[error] Caused by: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:176)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] at scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader(Macros.scala:66)
[error] at scala.tools.nsc.typechecker.Macros.findMacroClassLoader$(Macros.scala:65)
[error] at scala.tools.nsc.Global$$anon$1.findMacroClassLoader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$defaultMacroClassloaderCache$2(MacroRuntimes.scala:56)
[error] at scala.reflect.internal.SymbolTable$perRunCaches$$anon$1.apply(SymbolTable.scala:457)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader(MacroRuntimes.scala:58)
[error] at scala.reflect.macros.runtime.MacroRuntimes.defaultMacroClassloader$(MacroRuntimes.scala:58)
[error] at scala.tools.nsc.Global$$anon$1.defaultMacroClassloader(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes$MacroRuntimeResolver.resolveRuntime(MacroRuntimes.scala:76)
[error] at scala.reflect.macros.runtime.MacroRuntimes.$anonfun$standardMacroRuntime$3(MacroRuntimes.scala:38)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate(MapLike.scala:206)
[error] at scala.collection.mutable.MapLike.getOrElseUpdate$(MapLike.scala:203)
[error] at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:80)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime(MacroRuntimes.scala:38)
[error] at scala.reflect.macros.runtime.MacroRuntimes.standardMacroRuntime$(MacroRuntimes.scala:31)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:448)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$14.default(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroRuntime$(AnalyzerPlugins.scala:445)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroRuntime(Global.scala:469)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime(MacroRuntimes.scala:25)
[error] at scala.reflect.macros.runtime.MacroRuntimes.macroRuntime$(MacroRuntimes.scala:25)
[error] at scala.tools.nsc.Global$$anon$1.macroRuntime(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:619)
[error] at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
[error] at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
[error] at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
[error] at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:757)
[error] at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
[error] at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:469)
[error] at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1163)
[error] at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1223)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5631)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3280)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:471)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedArgToPoly$1(Typers.scala:3670)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$33(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.handlePolymorphicCall$1(Typers.scala:3678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3689)
[error] at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4767)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4776)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5571)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5692)
[error] at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:1079)
[error] at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1629)
[error] at scala.tools.nsc.typechecker.Namers$Namer.memberSig(Namers.scala:1798)
[error] at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1763)
[error] at scala.tools.nsc.typechecker.Namers$Namer$ValTypeCompleter.completeImpl(Namers.scala:910)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete(Namers.scala:1960)
[error] at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter.complete$(Namers.scala:1958)
[error] at scala.tools.nsc.typechecker.Namers$TypeCompleterBase.complete(Namers.scala:1953)
[error] at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1530)
[error] at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1678)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5240)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1999)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1868)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5538)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5681)
[error] at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3264)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5247)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540)
[error] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5617)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:106)
[error] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
[error] at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:96)
[error] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1467)
[error] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1451)
[error] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1444)
[error] at scala.tools.nsc.Global$Run.compile(Global.scala:1567)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:130)
[error] at xsbt.CachedCompiler0.run(CompilerInterface.scala:105)
[error] at xsbt.CompilerInterface.run(CompilerInterface.scala:31)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] at sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[error] at java.base/java.lang.Thread.run(Thread.java:832)
[error] (Compile / compileIncremental) java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? i
[warn] Ignoring load failure: no project loaded.
[error] java.lang.RuntimeException: Session not initialized.
[error] at scala.sys.package$.error(package.scala:26)
[error] at sbt.Project$.$anonfun$getOrError$1(Project.scala:442)
[error] at scala.Option.getOrElse(Option.scala:121)
[error] at sbt.Project$.getOrError(Project.scala:442)
[error] at sbt.Project$.session(Project.scala:448)
[error] at sbt.Project$.extract(Project.scala:453)
[error] at sbt.BuiltinCommands$.notifyUsersAboutShell(Main.scala:928)
[error] at sbt.BuiltinCommands$.$anonfun$notifyUsersAboutShell$3(Main.scala:937)
[error] at sbt.Command$.$anonfun$command$2(Command.scala:91)
[error] at sbt.Command$.process(Command.scala:181)
[error] at sbt.MainLoop$.processCommand(MainLoop.scala:151)
[error] at sbt.MainLoop$.$anonfun$next$2(MainLoop.scala:139)
[error] at sbt.State$$anon$1.runCmd$1(State.scala:246)
[error] at sbt.State$$anon$1.process(State.scala:250)
[error] at sbt.MainLoop$.$anonfun$next$1(MainLoop.scala:139)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.MainLoop$.next(MainLoop.scala:139)
[error] at sbt.MainLoop$.run(MainLoop.scala:132)
[error] at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:110)
[error] at sbt.io.Using.apply(Using.scala:22)
[error] at sbt.MainLoop$.runWithNewLog(MainLoop.scala:104)
[error] at sbt.MainLoop$.runAndClearLast(MainLoop.scala:59)
[error] at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:44)
[error] at sbt.MainLoop$.runLogged(MainLoop.scala:35)
[error] at sbt.StandardMain$.runManaged(Main.scala:138)
[error] at sbt.xMain.run(Main.scala:89)
[error] at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:111)
[error] at xsbt.boot.Launch$.withContextLoader(Launch.scala:131)
[error] at xsbt.boot.Launch$.run(Launch.scala:111)
[error] at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:37)
[error] at xsbt.boot.Launch$.launch(Launch.scala:120)
[error] at xsbt.boot.Launch$.apply(Launch.scala:20)
[error] at xsbt.boot.Boot$.runImpl(Boot.scala:56)
[error] at xsbt.boot.Boot$.main(Boot.scala:18)
[error] at xsbt.boot.Boot.main(Boot.scala)
[error] Session not initialized.
[error] Use 'last' for the full log.

Create Request/Response DTOs for Application Services

What

Instead of instantiating the Value Objects directly from the controller, we should instantiate a DTO such as SignUpUserRequest and pass it to the Application Service.

The Application Services intended for querying data, we should return also a DTO such as UserResponse.

Why

This way we:

  • Avoid coupling our entry points to the internal details on how we model out our domain (UserId value objects and so on).
  • Leave the code on the Hexagonal Architecture approach closer to what we'll do while evolving to an architecture applying CQRS concepts. We will only need to:
    • Replace the XxxRequest by their corresponding XxxCommand,
    • Send the commands to the Command Bus instead of directly calling the Application Service
    • Implement the Command Handler in order to extract each one of the scalar values from the Command, convert them to Value Object instances, and call to the Application Service
    • Modify the Application Service in order to directly receive the Value Objects instead of the XxxRequest

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.