错误:无效或损坏的jfile sbt/sbt-launch-0.13.5.jar



我一直在尝试使用教程安装spark,每次我运行命令sbt/sbt程序集,我得到错误"错误:无效或损坏的jarfile sbt/sbt-launch-0.13.5.jar"

我已经尝试了所有方法:分别将sbt文件添加到spark文件夹中的sbt文件夹中,单独安装sbt,检查下载并重新安装,但都是徒劳的。关于我做错了什么有什么建议吗?谢谢。

好的,玩了一段时间后,我终于得到了它,希望这将为您工作,以及。该教程构建了spark,其中提供了预构建的二进制文件。我正在使用Spark 1.2.0,只是作为一个说明(1.4.1不适合我)

这是在Ubuntu 15.04上,但应该在14.04上同样的

1)从bashrc 中删除以下行
export SCALA_HOME=/usr/local/src/scala/scala-2.10.4
export PATH=$SCALA_HOME/bin:$PATH
2)删除并重新安装scala
sudo rm -rf /usr/local/src/scala
# The following line is only needed if you installed scala another way, if so remove the #
# sudo apt-get remove scala-library scala
wget http://www.scala-lang.org/files/archive/scala-2.11.7.deb
sudo dpkg -i scala-2.11.7.deb
sudo apt-get update
sudo apt-get install scala

3)下载PreBuilt Spark并提取

wget http://d3kbcqa49mib13.cloudfront.net/spark-1.2.0-bin-hadoop2.4.tgz
tar -xzvf spark-1.2.0-bin-hadoop2.4.tgz 
4)运行spark-shell
cd spark-1.2.0-bin-hadoop2.4/
./bin/spark-shell

来源(基本上我从哪里读到,这个解决方案一直在尝试和错误)

https://chongyaorobin.wordpress.com/2015/07/01/step-by-step-of-installing-apache-spark-on-apache-hadoop/
https://gist.github.com/visenger/5496675

如果你已经从http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0.tgz下载了spark包,那么交叉检查文件- "sbt/sbt-launch-0.13.5.jar"。如果它只包含小的(5-6行)html内容,那么你需要手动下载jar文件。这个html文件只是表明没有找到所需的jar文件。对于centos,您可以使用以下步骤:

  1. 手动下载jar:
    wget http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.1/sbt-launch.jar ./sbt/sbt-launch-0.13.5.jar
  2. 禁止自动下载jar文件:
    sed -i '47,68s/^/#/' sbt/sbt-launch-lib.bash
  3. 重新安装spark:
    sbt/sbt assembly

它为我工作没有改变scala安装。

sbt脚本不能正确下载sbt-launch-0.13.5.jar,因为它使用的url一定有问题。因此,它下载的文件只包含一个HTML头(没有400或302代码)。在出现更好的解决方案之前,作为一种变通方法,我会事先手动下载sbt-launch-0.13.5.jar。

SPARK_HOME/sbt/sbt-launch-lib。bash script将第53行到第57行替换为以下

if hash curl 2>/dev/null; then
  (curl --fail --location --silent ${URL1} > ${JAR_DL} ||
   (rm -f "${JAR_DL}" && curl --fail --location --silent ${URL2} > ${JAR_DL})) && 
   mv "${JAR_DL}" "${JAR}"
elif hash wget 2>/dev/null; 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

最简单的方法是手动安装sbt,如下所示

下载SBT deb文件

wget http://dl.bintray.com/sbt/debian/sbt-0.13.5.deb

然后运行

sudo dpkg -i sbt-0.13.5.deb
sudo apt-get update
sudo apt-get install sbt

然后使用

sbt assembly代替sbt/sbt assembly

@Frozenfire,我不确定这是否可能,但Spark文档概述说:

对于Scala API, Spark 1.4.1使用Scala 2.10。你将需要使用兼容Scala版本(2.10.x)

我想知道这是否是你有这个问题的原因:

我正在使用Spark 1.2.0,只是作为一个说明(1.4.1不适合我)

因为你有:

sudo dpkg -i scala-2.11.7.deb

下载并安装scala-2.11.7

我不知道,但这可能是一个线索!

PS1:这更像是对冰火的回答的评论,但我不能评论,因为缺乏声誉,我想分享这个。

PS2: build for Scala 2.11

最新更新