- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 280
 
Open
Labels
Description
Play Slick Version
5.0.0
Play Version
2.8.2
API
Scala 2.13.2
Operating System
macOS 10.15.5
JDK
java version 11
Library Dependencies
"com.github.tminglei" %% "slick-pg" % "0.19.0"
"org.postgresql" % "postgresql" % "42.2.13"
"com.typesafe.slick" %% "slick" % "3.3.2"
"com.typesafe.slick" %% "slick-hikaricp" % "3.3.2"
"com.typesafe.play" %% "play-slick" % "5.0.0"
"com.typesafe.play" %% "play-slick-evolutions" % "5.0.0"
Expected Behavior
- Application should connect to database as it does in version 2.8.1 when configured like below in application.conf
 
slick {
  dbs {
    default {
      profile = "io.mydomain.persistence.PostgresProfile$"
      db {
        driver = "org.postgresql.Driver"
        url = "jdbc:postgresql://localhost:5432/thedatabase"
        user = "theuser"
        password = "thepassword"
      }
    }
  }
}
package io.mydomain.persistence
import com.github.tminglei.slickpg._
import slick.driver.JdbcProfile
import slick.basic.Capability
import play.api.libs.json.{Format, Json, JsValue}
trait PostgresProfile
  extends ExPostgresProfile
                          with PgArraySupport
                          with PgDate2Support
                          with PgRangeSupport
                          with PgHStoreSupport
                          with PgPlayJsonSupport
                          with PgSearchSupport
                          with PgPostGISSupport
                          with PgNetSupport
                          with PgLTreeSupport {
  def pgjson = "jsonb" 
  override val api = MyAPI
  object MyAPI extends API with ArrayImplicits
                           with DateTimeImplicits
                           with JsonImplicits
                           with NetImplicits
                           with LTreeImplicits
                           with RangeImplicits
                           with HStoreImplicits
                           with SearchImplicits
                           with SearchAssistants {
    implicit val strListTypeMapper = new SimpleArrayJdbcType[String]("text").to(_.toList)
    implicit val playJsonArrayTypeMapper =
      new AdvancedArrayJdbcType[JsValue](pgjson,
        (s) => utils.SimpleArrayUtils.fromString[JsValue](Json.parse(_))(s).orNull,
        (v) => utils.SimpleArrayUtils.mkString[JsValue](_.toString())(v)
      ).to(_.toList)
  }
}
object PostgresProfile extends PostgresProfile
Actual Behavior
- Fails to connect to database when
 
play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
        at play.api.Configuration$.configError(Configuration.scala:155)
        at play.api.Configuration.reportError(Configuration.scala:394)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.create(SlickApi.scala:99)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get$lzycompute(SlickApi.scala:87)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get(SlickApi.scala:86)
        at play.api.db.slick.DefaultSlickApi.dbConfig(SlickApi.scala:70)
        at TestApp.dbConfig$lzycompute(Loader.scala:36)
        at TestApp.dbConfig(Loader.scala:36)
        at TestApp.signUpCodesService$lzycompute(Loader.scala:42)
        at TestApp.signUpCodesService(Loader.scala:42)
Caused by: slick.SlickException: Error getting instance of profile "io.mydomain.persistence.PostgresProfile$"
        at slick.basic.DatabaseConfig$.forConfig(DatabaseConfig.scala:95)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.create(SlickApi.scala:95)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get$lzycompute(SlickApi.scala:87)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get(SlickApi.scala:86)
        at play.api.db.slick.DefaultSlickApi.dbConfig(SlickApi.scala:70)
        at TestApp.dbConfig$lzycompute(Loader.scala:36)
        at TestApp.dbConfig(Loader.scala:36)
        at TestApp.signUpCodesService$lzycompute(Loader.scala:42)
        at TestApp.signUpCodesService(Loader.scala:42)
        at TestApp.signUpCodesController$lzycompute(Loader.scala:55)
Caused by: java.lang.ClassNotFoundException: io.mydomain.persistence.PostgresProfile$
        at java.base/java.lang.ClassLoader.findClass(ClassLoader.java:719)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at slick.util.ClassLoaderUtil$$anon$1.loadClass(ClassLoaderUtil.scala:17)
        at slick.basic.DatabaseConfig$.forConfig(DatabaseConfig.scala:92)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.create(SlickApi.scala:95)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get$lzycompute(SlickApi.scala:87)
        at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get(SlickApi.scala:86)
        at play.api.db.slick.DefaultSlickApi.dbConfig(SlickApi.scala:70)
        at TestApp.dbConfig$lzycompute(Loader.scala:36)
Reproducible Test Case
The issue goes away when I simply change the Play plugin version from 2.8.2 to 2.8.1