【问题标题】:pureconfig can't derive case class with many attributespureconfig 无法派生具有许多属性的案例类
【发布时间】:2018-06-25 19:38:06
【问题描述】:

我无法派生具有许多属性的案例类。奇怪的是,输出在 SBT 和 gradle 之间变化。在https://github.com/geoHeil/pureconfig-issue 找到了一个最小的可重现示例,代码如下:

sbt

sbt compile
[error] Caused by: java.lang.ClassNotFoundException: scala.runtime.LazyRef

分级

./gradlew compileScala
ould not find implicit value for parameter reader: pureconfig.ConfigReader[Foo.XXX]
  pureconfig.ConfigReader[XXX]

代码:

object Foo extends App {
  println("here")

  case class MyNestedThing(foo: String)
  case class XXX(
                  a: String,
                  b: String,
                  c: String,
                  d: String,
                  e: String,
                  f: String,
                  g: String,
                  h: String,
                  i: String,
                  j: String,
                  k: String,
                  l: String,
                  m: String,
                  n: String,
                  o: String,
                  p: String,
                  q: String,
                  r: String,
                  s: String,
                  t: String,
                  u: String,
                  v: String,
                  w: String,
                  x: String,
                  y: String,
                  z: String,
                  aa: String,
                  ab: String,
                  ac: String,
                  ad: String,
                  ae: String,
                  af: String,
                  ag: String,
                  ah: String,
                  ai: String,
                  aj: String,
                  ak: String,
                  al: String,
                  am: String,
                  an: String,
                  ao: String,
                  ap: String,
                  aq: String,
                  someLonglllllllllllllllllllllllllll: String,
                  so1meLonglllllllllllllllllllllllllll: String,
                  som2eLonglllllllllllllllllllllllllll: String,
                  ar: MyNestedThing,
                  as: MyNestedThing
                )

  pureconfig.ConfigReader[XXX]
}

虽然使用时效果很好:

object Foo extends App {
  println("here")

  case class MyNestedThing(foo: String)

  case class XXX(
                  a: String,
                  b: String,
                  som2eLonglllllllllllllllllllllllllll: String,
                  ar: MyNestedThing,
                  as: MyNestedThing
                )

  pureconfig.ConfigReader[XXX]
}

编辑

有趣的是,我在 scala 版本中有一个混淆,所以当将它修复为所有 2.11 SBT 编译正常,但 gradle 仍然显示相同的问题。

【问题讨论】:

    标签: scala gradle shapeless case-class pureconfig


    【解决方案1】:

    当为 scala 编译器提供更多内存时,它可以正常工作。 https://github.com/pureconfig/pureconfig/issues/391

    tasks.withType(ScalaCompile) {
        configure(scalaCompileOptions.forkOptions) {
            jvmArgs = ["-Xss2m"]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 1970-01-01
      • 2020-03-28
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2019-03-20
      • 2021-08-28
      相关资源
      最近更新 更多