diff --git a/CHANGES.txt b/CHANGES.txt index a362f786d5..c399c0d0d6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -61,6 +61,7 @@ * Add a system property to set hostId if not yet initialized (CASSANDRA-14582) * GossiperTest.testHasVersion3Nodes didn't take into account trunk version changes, fixed to rely on latest version (CASSANDRA-16651) Merged from 4.0: + * Fixed broken classpath when multiple jars in build directory (CASSANDRA-17129) * DebuggableThreadPoolExecutor does not propagate client warnings (CASSANDRA-17072) * internode_send_buff_size_in_bytes and internode_recv_buff_size_in_bytes have new names. Backward compatibility with the old names added (CASSANDRA-17141) * Remove unused configuration parameters from cassandra.yaml (CASSANDRA-17132) diff --git a/bin/cassandra.in.sh b/bin/cassandra.in.sh index 5d13cdae70..dcbd12d014 100644 --- a/bin/cassandra.in.sh +++ b/bin/cassandra.in.sh @@ -30,10 +30,17 @@ CLASSPATH="$CASSANDRA_CONF" # compiled classes. NOTE: This isn't needed by the startup script, # it's just used here in constructing the classpath. if [ -d $CASSANDRA_HOME/build ] ; then - #cassandra_bin="$CASSANDRA_HOME/build/classes/main" - cassandra_bin=`ls -1 $CASSANDRA_HOME/build/apache-cassandra*.jar` + jars_cnt="`ls -1 $CASSANDRA_HOME/build/apache-cassandra*.jar | grep -v 'javadoc.jar' | grep -v 'sources.jar' | wc -l | xargs echo`" + if [ "$jars_cnt" -gt 1 ]; then + dir="`cd $CASSANDRA_HOME/build; pwd`" + echo "There are JAR artifacts for multiple versions in the $dir directory. Please clean the project with 'ant realclean' and build it again." 1>&2 + exit 1 + fi - CLASSPATH="$CLASSPATH:$cassandra_bin" + if [ "$jars_cnt" = "1" ]; then + cassandra_bin="`ls -1 $CASSANDRA_HOME/build/apache-cassandra*.jar | grep -v javadoc | grep -v sources`" + CLASSPATH="$CLASSPATH:$cassandra_bin" + fi fi # the default location for commitlogs, sstables, and saved caches