尝试遵循SBT插件教程时遇到此错误
java.lang.NoClassDefFoundError: scala/Serializable
[error] sbt.std.InputWrapper$.valueMacroImpl(InputWrapper.scala:136)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error] scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$6(JavaReflectionRuntimes.scala:51)
值得注意的是:我尝试使用scala的更新版本,版本“2.13.11”,出版商使用的是“2.10.4”。
我遗漏了什么,或者2.13 Scala遗漏了什么,会导致这种情况?解决办法是什么?
1条答案
按热度按时间xdyibdwo1#
正如@LuisMiguelMejíaSuárez所说,问题在于你使用的scala版本。
有一个关于Cannot compile SBT plugin under Scala 2.13.0的问题已经关闭。回购的维护者说
SBT插件应该像这样创建:
和Scala版本不应该指定,除非你是在sbt 1.x和0.13之间交叉构建。在2.13.0下没有可用的sbt,所以期望没有意义。
在文档Sbt - Creating an auto plugin中也有解释
*sbt插件必须使用Scala 2.12.x进行编译,sbt本身就是在其中编译的。通过不指定scalaVersion,sbt将默认为适合插件的Scala版本。
在上面提到的sbt问题中评论的一个用户创建了一个sbt 1.x hello world,您可以看到它被用作创建自动插件中所示示例的 * 主页 *。