Skip to content

Commit

Permalink
SPARK-1703 Warn users if Spark is run on JRE6 but compiled with JDK7.
Browse files Browse the repository at this point in the history
This add some guards and good warning messages if users hit this issue. /cc @aarondav with whom I discussed parts of the design.

Author: Patrick Wendell <[email protected]>

Closes apache#627 from pwendell/jdk6 and squashes the following commits:

a38a958 [Patrick Wendell] Code review feedback
94e9f84 [Patrick Wendell] SPARK-1703 Warn users if Spark is run on JRE6 but compiled with JDK7.
  • Loading branch information
pwendell committed May 4, 2014
1 parent 0088ced commit 0c98a8f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
14 changes: 14 additions & 0 deletions bin/compute-classpath.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ CLASSPATH="$SPARK_CLASSPATH:$SPARK_SUBMIT_CLASSPATH:$FWDIR/conf"

ASSEMBLY_DIR="$FWDIR/assembly/target/scala-$SCALA_VERSION"

if [ -n "${JAVA_HOME}" ]; then
JAR_CMD="${JAVA_HOME}/bin/jar"
else
JAR_CMD="jar"
fi

# First check if we have a dependencies jar. If so, include binary classes with the deps jar
if [ -f "$ASSEMBLY_DIR"/spark-assembly*hadoop*-deps.jar ]; then
CLASSPATH="$CLASSPATH:$FWDIR/core/target/scala-$SCALA_VERSION/classes"
Expand All @@ -55,6 +61,14 @@ else
else
ASSEMBLY_JAR=`ls "$ASSEMBLY_DIR"/spark-assembly*hadoop*.jar`
fi
jar_error_check=$($JAR_CMD -tf $ASSEMBLY_JAR org/apache/spark/SparkContext 2>&1)
if [[ "$jar_error_check" =~ "invalid CEN header" ]]; then
echo "Loading Spark jar with '$JAR_CMD' failed. "
echo "This is likely because Spark was compiled with Java 7 and run "
echo "with Java 6. (see SPARK-1703). Please use Java 7 to run Spark "
echo "or build Spark with Java 6."
exit 1
fi
CLASSPATH="$CLASSPATH:$ASSEMBLY_JAR"
fi

Expand Down
9 changes: 8 additions & 1 deletion bin/spark-class
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,14 @@ if [ -e "$TOOLS_DIR"/target/spark-tools*[0-9Tg].jar ]; then
fi

# Compute classpath using external script
CLASSPATH=`$FWDIR/bin/compute-classpath.sh`
classpath_output=$($FWDIR/bin/compute-classpath.sh)
if [[ "$?" != "0" ]]; then
echo "$classpath_output"
exit 1
else
CLASSPATH=$classpath_output
fi

if [[ "$1" =~ org.apache.spark.tools.* ]]; then
CLASSPATH="$CLASSPATH:$SPARK_TOOLS_JAR"
fi
Expand Down
14 changes: 14 additions & 0 deletions make-distribution.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,20 @@ if [ $? != 0 ]; then
exit -1;
fi

if [ -z "${JAVA_HOME}" ]; then
echo "Error: JAVA_HOME is not set, cannot proceed."
exit -1
fi

JAVA_CMD=$JAVA_HOME/bin/java
JAVA_VERSION=$($JAVA_CMD -version 2>&1)
if ! [[ "$JAVA_VERSION" =~ "1.6" ]]; then
echo "Error: JAVA_HOME must point to a JDK 6 installation (see SPARK-1703)."
echo "Output from 'java -version' was:"
echo "$JAVA_VERSION"
exit -1
fi

# Initialize defaults
SPARK_HADOOP_VERSION=1.0.4
SPARK_YARN=false
Expand Down

0 comments on commit 0c98a8f

Please sign in to comment.