使用Scala版本2.12.4,当使用包含scala标准库的胖jar部署项目时,for循环仍然不起作用,给出以下错误:
java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;
我的build.sbt文件如下:
name := "PixelMCDonations"
version := "0.1"
scalaVersion := "2.12.4"
resolvers += "sponge" at "https://repo.spongepowered.org/maven"
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.25"
libraryDependencies += "org.spongepowered" % "spongeapi" % "7.0.0"
libraryDependencies += "me.lucko.luckperms" % "luckperms-api" % "4.0"
libraryDependencies += "org.scala-lang" % "scala-library" % scalaVersion.value
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
代码段是:
val ranks: Array[Rank] = ...
for (e: Rank <- ranks){
if (value > e.lowerBound && value < e.upperbound){
return e
}
}
return null
我不确定我缺少什么,因为我使用相同的scala版本进行部署和开发以及我尝试使用for循环的所有其他高级功能。
答案 0 :(得分:0)
据推测,你并没有对Scala进行着色,因为Minecraft Forge已将过时的Scala版本作为依赖项包含在内,他们迫切希望摆脱它们,因为它们可以在没有烦人的情况下碰撞版本,并且可以& #39;删除它而不会让人烦恼。
你需要创造一个'胖罐'&#39;包括你想要使用的scala版本。
我还建议对它进行着色,并将其作为插件/ mod的外部库包含在内,这样如果你创建了依赖它的其他插件/ mod,你就可以减小你包装的jar的大小。 ,以及重复类的数量。
它也应该有助于使您的插件彼此兼容。