使用 SBT 构建 Apache Spark:无效或损坏的 jarfile
Building Apache Spark using SBT: Invalid or corrupt jarfile
我正在尝试在我的本地计算机上安装 Spark。我一直在关注 this 指南。我已经安装了 JDK-7
(还有 JDK-8
)和 Scala 2.11.7
。当我尝试使用 sbt
构建 Spark 1.4.1
时出现问题。我收到以下异常。
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
我已经在寻找解决这个问题的方法。我找到了一个很好的指南 ,它使用了预构建版本。除了使用预构建版本,有没有办法使用 sbt
安装 Spark
?此外,为什么会出现 Invalid or corrupt jarfile
错误?
我遇到了同样的问题。我已经修好了。
这可能是因为 sbt-launch-0.13.7.jar 下载失败,虽然你可以看到文件存在,但它不是正确的文件。该文件的大小 约为 1.2MB。如果小于那个,你可以进入 build/ ,使用 "vim sbt-launch-0.13.7.jar" 或其他工具 open sbt-launch-0.13.7.jar file.
如果文件有这样的内容:
<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-launch-0.13.7.jar。
然后在同一目录下打开sbt-launch-lib.bash,查看第41和42行,给出了两个url。打开它检查它们是否正常工作。
如果url1不行,手动下载sbt-launch.jar(你可以用url2,可能可以,也可以到sbt官网下载), 放在同一个目录, 重命名为 sbt-launch-0.13.7.jar, 然后你应该在下载相关的注释行(可能在第 47 行之间和68),避免脚本再次下载。像这样:
acquire_sbt_jar () {
SBT_VERSION=`awk -F "=" '/sbt\.version/ {print }' ./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 assembly"再次构建火花。
希望你能成功。
如果我没有表达清楚,以下链接可能会有帮助。
https://www.mail-archive.com/user@spark.apache.org/msg34358.html
prabeesh 的回答
https://groups.google.com/forum/#!topic/predictionio-user/fllCh8n-0d4
手动下载sbt-launch.jar文件(可以用url2,可能可以,也可以从sbt官网下载),放到同目录下,重命名为sbt-launch -0.13.7.jar,然后运行 sbt/sbt 汇编命令。
我正在尝试在我的本地计算机上安装 Spark。我一直在关注 this 指南。我已经安装了 JDK-7
(还有 JDK-8
)和 Scala 2.11.7
。当我尝试使用 sbt
构建 Spark 1.4.1
时出现问题。我收到以下异常。
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
我已经在寻找解决这个问题的方法。我找到了一个很好的指南 sbt
安装 Spark
?此外,为什么会出现 Invalid or corrupt jarfile
错误?
我遇到了同样的问题。我已经修好了。
这可能是因为 sbt-launch-0.13.7.jar 下载失败,虽然你可以看到文件存在,但它不是正确的文件。该文件的大小 约为 1.2MB。如果小于那个,你可以进入 build/ ,使用 "vim sbt-launch-0.13.7.jar" 或其他工具 open sbt-launch-0.13.7.jar file.
如果文件有这样的内容:
<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-launch-0.13.7.jar。 然后在同一目录下打开sbt-launch-lib.bash,查看第41和42行,给出了两个url。打开它检查它们是否正常工作。
如果url1不行,手动下载sbt-launch.jar(你可以用url2,可能可以,也可以到sbt官网下载), 放在同一个目录, 重命名为 sbt-launch-0.13.7.jar, 然后你应该在下载相关的注释行(可能在第 47 行之间和68),避免脚本再次下载。像这样:
acquire_sbt_jar () {
SBT_VERSION=`awk -F "=" '/sbt\.version/ {print }' ./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 assembly"再次构建火花。
希望你能成功。
如果我没有表达清楚,以下链接可能会有帮助。
https://www.mail-archive.com/user@spark.apache.org/msg34358.html
https://groups.google.com/forum/#!topic/predictionio-user/fllCh8n-0d4
手动下载sbt-launch.jar文件(可以用url2,可能可以,也可以从sbt官网下载),放到同目录下,重命名为sbt-launch -0.13.7.jar,然后运行 sbt/sbt 汇编命令。