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

Invalid or corrupt sbt-launch-jar file

我一直在尝试在我的 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 的解决方案,但其中 none 似乎有效。我见过很多人在 Whosebug 上提问,但解决方案似乎并不一致。有人可以帮我吗?

哎呀。如果您查看此 "jar" 文件的内容,它实际上是一个 HTML 404 文档。我会报告错误。

如果您决定构建一个发行版,Maven 构建得到更好的维护(很明显!)。我只为 "playing around" 使用 SBT 构建,然后我只使用我的 brew 安装的 SBT,而不是捆绑的这个(更像是拙劣的......)。

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

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

更新 2:糟糕,删除文件没有帮助。我误以为包含了伪造的 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 就可以了。

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