尝试将 PureConfig 和 Circe 用于 scala 时出现无形错误
Shapeless error while trying trying to use PureConfig and Circe for scala
shapeless.DefaultSymbolicLabelling shapeless.DefaultSymbolicLabelling$.instance(shapeless.HList)
同时使用 pureconfig 和 circe 时出现此错误。
我将 spark 3.1.2 与 spark k8s 运算符一起使用。
此错误是由于 shapeless 库版本冲突造成的。 Spark 3.1.2 附带 shapeless 2.3.3,而这两个包都需要 shapeless 2.3.7。为了解决这个问题,我遵循了提到的步骤 here,其中涉及着色,即重命名依赖项。
对于 SBT
如果您使用 sbt-assembly 插件来创建您的 JAR,您可以 shade 通过将以下设置添加到您的 assembly.sbt 文件来实现无形化:
assembly / assemblyShadeRules := Seq(ShadeRule.rename("shapeless.**" -> "new_shapeless.@1").inAll)
Maven
maven-shade-plugin 可以通过将以下块添加到您的 pom.xml 文件来遮蔽无形:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<relocations>
<relocation>
<pattern>shapeless</pattern>
<shadedPattern>shapelesspureconfig</shadedPattern>
</relocation>
</relocations>
</configuration>
</plugin>
shapeless.DefaultSymbolicLabelling shapeless.DefaultSymbolicLabelling$.instance(shapeless.HList)
同时使用 pureconfig 和 circe 时出现此错误。
我将 spark 3.1.2 与 spark k8s 运算符一起使用。
此错误是由于 shapeless 库版本冲突造成的。 Spark 3.1.2 附带 shapeless 2.3.3,而这两个包都需要 shapeless 2.3.7。为了解决这个问题,我遵循了提到的步骤 here,其中涉及着色,即重命名依赖项。
对于 SBT
如果您使用 sbt-assembly 插件来创建您的 JAR,您可以 shade 通过将以下设置添加到您的 assembly.sbt 文件来实现无形化:
assembly / assemblyShadeRules := Seq(ShadeRule.rename("shapeless.**" -> "new_shapeless.@1").inAll)
Maven
maven-shade-plugin 可以通过将以下块添加到您的 pom.xml 文件来遮蔽无形:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<relocations>
<relocation>
<pattern>shapeless</pattern>
<shadedPattern>shapelesspureconfig</shadedPattern>
</relocation>
</relocations>
</configuration>
</plugin>