sbt-launch-jar文件无效或损坏

时间:2015-08-05 16:01:09

标签: java scala jar apache-spark sbt

我一直在尝试在我的MacOSX上安装spark。我已经使用brew安装了Scala和Sbt。下载并解开spark-1.4.1(我也试过spark-1.2.1和spark-1.1.1)后我正在运行 -

sbt/sbt clean assembly 

每次出现同样的错误:

Invalid or corrupt jarfile sbt/sbt-launch-0.13.5.jar

我已经尝试过上面提到的更改名称和手动安装sbt的解决方案,但这些似乎都不起作用。我看到很多时候人们在stackoverflow上问问题,解决方案似乎并不一致。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:16)

让人惊讶。如果你看一下这个" jar"的内容文件,它实际上是一个HTML 404文档。我会报告错误。

如果你决定构建一个发行版,那么Maven版本会得到更好的维护(显然!)。我只使用SBT版本来播放"然后我只是使用我自己安装的SBT,而不是那个被捆绑的SBT(更像是笨拙......)。

更新:构建脚本build/sbt应该按需下载jar文件。我认为有人使用这个虚假的HTML文件构建了tgz文件,而没有先检查它。我正在调查,我将提交错误报告。

同时,只需删除build/sbt-launch-0.13.7.jar并再次尝试运行build/sbtsbt/sbt已过时,只需拨打build/sbt)。

UPDATE2:废话,删除文件没有帮助。我错了,包含了伪造的jar文件。我认为它试图读取的URL很糟糕。待命...

最终更新:好消息是此错误已修复为1.5。目前,只需下载http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.7/sbt-launch.jar,将其移至build目录,然后将其重命名为sbt-launch-0.13.7.jar。然后build/sbt就可以了。

答案 1 :(得分:1)

build / sbt-launch-lib.bash 中编辑对应的行以及

if [ $(command -v curl) ]; then
  (curl --fail --location --silent ${URL1} > ${JAR_DL} ||\
   (rm -f "${JAR_DL}" && curl --fail --location --silent ${URL2} ${JAR_DL})) && \
   mv "${JAR_DL}" "${JAR}"
elif [ $(command -v wget) ]; then
  (wget --quiet ${URL1} -O ${JAR_DL} ||\
   (rm -f "${JAR_DL}" && wget --quiet ${URL2} -O ${JAR_DL})) &&\
    mv "${JAR_DL}" "${JAR}"
else

然后再试一次,运行sbt汇编命令

sbt/sbt assembly