当java调用scala

时间:2018-01-12 13:24:27

标签: java scala sbt minecraft spongeapi

使用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循环的所有其他高级功能。

1 个答案:

答案 0 :(得分:0)

据推测,你并没有对Scala进行着色,因为Minecraft Forge已将过时的Scala版本作为依赖项包含在内,他们迫切希望摆脱它们,因为它们可以在没有烦人的情况下碰撞版本,并且可以& #39;删除它而不会让人烦恼。

你需要创造一个'胖罐'&#39;包括你想要使用的scala版本。

我还建议对它进行着色,并将其作为插件/ mod的外部库包含在内,这样如果你创建了依赖它的其他插件/ mod,你就可以减小你包装的jar的大小。 ,以及重复类的数量。

它也应该有助于使您的插件彼此兼容。