首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SBT构建Apache :无效或损坏的jarfile

使用SBT构建Apache :无效或损坏的jarfile
EN

Stack Overflow用户
提问于 2015-07-26 13:53:01
回答 2查看 6.9K关注 0票数 11

我正试着在我的本地机器上安装火花。我一直在遵循指南。我已经安装了JDK-7 (也有JDK-8)和Scala 2.11.7。当我试图使用sbt构建Spark 1.4.1时会出现问题。我得到了以下例外。

代码语言:javascript
复制
NOTE: The sbt/sbt script has been relocated to build/sbt.
      Please update references to point to the new location.

      Invoking 'build/sbt assembly' now ...

Attempting to fetch sbt
Launching sbt from build/sbt-launch-0.13.7.jar
Error: Invalid or corrupt jarfile build/sbt-launch-0.13.7.jar

我已经找到了解决这个问题的办法。我找到了一个不错的指南https://stackoverflow.com/a/31597283/2771315,它使用的是一个预先构建的版本。除了使用预构建的版本之外,还有使用sbt安装sbt的方法吗?此外,是否有理由解释为什么会发生Invalid or corrupt jarfile错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-08 10:23:21

我也遇到了同样的问题。我已经修好了。

这可能是因为SBT-Laune-0.13.7.jar下载失败,虽然您可以看到文件是存在的,但它不是正确的文件。该文件为,大小约为1.2MB。如果不是这样,您可以进入构建/,使用“vimSBT-Laune-0.13.7.jar”或其他工具来打开SBT-Laune-0.13.7.jar文件。

如果文件的内容如下:

代码语言:javascript
复制
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

这意味着没有下载SBT-Launt-0.13.7.jar。然后在同一个目录中打开sbt-launch-lib.bash,检查第41行和第42行,它会给出两个urls。打开看看它们是否正常工作。

如果sbt-launch.jar不能工作,请手动下载url1 (您可以使用url2,它可以工作,也可以从sbt官方网站下载),将其放在同一个目录中,将其重命名为sbt- same 0.13.7.jar,然后您应该注释与下载相关的行(可能在第47行和第68行之间),避免再次下载脚本。如下所示:

代码语言:javascript
复制
acquire_sbt_jar () {
  SBT_VERSION=`awk -F "=" '/sbt\.version/ {print $2}'    ./project/build.properties`
  URL1=http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch.jar
  URL2=http://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch.jar
  JAR=build/sbt-launch-${SBT_VERSION}.jar

  sbt_jar=$JAR

 # if [[ ! -f "$sbt_jar" ]]; then
 #   # Download sbt launch jar if it hasn't been downloaded yet
 #   if [ ! -f "${JAR}" ]; then
 #   # Download
 #   printf "Attempting to fetch sbt\n"
 #   JAR_DL="${JAR}.part"
 #   if [ $(command -v curl) ]; then
 #     (curl --silent ${URL1} > "${JAR_DL}" || curl --silent ${URL2} > "${JAR_DL}") && mv "${JAR_DL}" "${JAR}"
 #   elif [ $(command -v wget) ]; then
 #     (wget --quiet ${URL1} -O "${JAR_DL}" || wget --quiet ${URL2} -O "${JAR_DL}") && mv "${JAR_DL}" "${JAR}"
 #   else
 #     printf "You do not have curl or wget installed, please install sbt manually from http://www.scala-sbt.org/\n"
 #     exit -1
 #   fi
 #   fi
 #   if [ ! -f "${JAR}" ]; then
 #   # We failed to download
 #   printf "Our attempt to download sbt locally to ${JAR} failed. Please install sbt manually from http://www.scala-sbt.org/\n"
 #   exit -1
 #   fi
 #   printf "Launching sbt from ${JAR}\n"
 # fi
 }

然后使用" build /sbt程序集“再次生成火花。

希望你能成功。

如果我没有清楚地表达,下面的链接可能会有帮助。

https://www.mail-archive.com/user@spark.apache.org/msg34358.html

错误:无效或损坏的jarfile sbt/sbt-启动-0.13.5.jar:prabeesh的答案

https://groups.google.com/forum/#!topic/predictionio-user/fllCh8n-0d4

票数 18
EN

Stack Overflow用户

发布于 2015-12-25 11:58:29

手动下载sbt -unch.jar文件(您可以使用url2,它可以工作,也可以从sbt官方网站下载),将它放在同一个目录中,将其重命名为sbt启动-0.13.7.jar,然后运行sbt/sbt程序集命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31637752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档