diff --git a/distribution/packages/src/deb/init.d/elasticsearch b/distribution/packages/src/deb/init.d/elasticsearch index 72eb635bba3..82fc52c1b50 100755 --- a/distribution/packages/src/deb/init.d/elasticsearch +++ b/distribution/packages/src/deb/init.d/elasticsearch @@ -81,16 +81,16 @@ if [ ! -x "$DAEMON" ]; then fi checkJava() { - if [ -x "$JAVA_HOME/bin/java" ]; then - JAVA="$JAVA_HOME/bin/java" - else - JAVA=`which java` - fi + if [ ! -z "${JAVA_HOME}" ]; then + JAVA="${JAVA_HOME}"/bin/java + else + JAVA="${ES_HOME}"/jdk/bin/java + fi - if [ ! -x "$JAVA" ]; then - echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME" - exit 1 - fi + if [ ! -x "$JAVA" ]; then + echo "could not find java in JAVA_HOME or bundled at ${JAVA}" + exit 1 + fi } case "$1" in diff --git a/distribution/packages/src/rpm/init.d/elasticsearch b/distribution/packages/src/rpm/init.d/elasticsearch index 99d8ef45ef6..fbf9e090c1e 100644 --- a/distribution/packages/src/rpm/init.d/elasticsearch +++ b/distribution/packages/src/rpm/init.d/elasticsearch @@ -68,16 +68,16 @@ if [ ! -x "$exec" ]; then fi checkJava() { - if [ -x "$JAVA_HOME/bin/java" ]; then - JAVA="$JAVA_HOME/bin/java" - else - JAVA=`which java` - fi + if [ ! -z "${JAVA_HOME}" ]; then + JAVA="${JAVA_HOME}"/bin/java + else + JAVA="${ES_HOME}"/jdk/bin/java + fi - if [ ! -x "$JAVA" ]; then - echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME" - exit 1 - fi + if [ ! -x "$JAVA" ]; then + echo "could not find java in JAVA_HOME or bundled at ${JAVA}" + exit 1 + fi } start() { diff --git a/qa/os/src/test/java/org/elasticsearch/packaging/test/PackageTestCase.java b/qa/os/src/test/java/org/elasticsearch/packaging/test/PackageTestCase.java index 20781c63f69..05bc80c3263 100644 --- a/qa/os/src/test/java/org/elasticsearch/packaging/test/PackageTestCase.java +++ b/qa/os/src/test/java/org/elasticsearch/packaging/test/PackageTestCase.java @@ -136,6 +136,25 @@ public abstract class PackageTestCase extends PackagingTestCase { assertRunsWithJavaHome(); } + public void test33RunsIfJavaNotOnPath() throws Exception { + assumeThat(distribution().hasJdk, is(true)); + + final Result readlink = sh.run("readlink /usr/bin/java"); + boolean unlinked = false; + try { + sh.run("unlink /usr/bin/java"); + unlinked = true; + + startElasticsearch(sh); + runElasticsearchTests(); + stopElasticsearch(sh); + } finally { + if (unlinked) { + sh.run("ln -sf " + readlink.stdout.trim() + " /usr/bin/java"); + } + } + } + public void test42BundledJdkRemoved() throws Exception { assumeThat(installation, is(notNullValue())); assumeThat(distribution().hasJdk, is(true));