Skip to content

Commit

Permalink
ARROW-1966: [C++] Accommodate JAVA_HOME on Linux that includes the jr…
Browse files Browse the repository at this point in the history
…e/ directory, or is the full path to directory with libjvm

Some users ran into a rough edge where they had a non-standard JRE directory (possibly related to some recent changes by Oracle in their JDK installer)

Author: Wes McKinney <[email protected]>

Closes #1487 from wesm/ARROW-1966 and squashes the following commits:

7e14923 [Wes McKinney] Add note to API documentation about JAVA_HOME
f77b31e [Wes McKinney] Accommodate a JAVA_HOME containing the jre/ directory, or an absolute path to directory containing libjvm
  • Loading branch information
wesm committed Jan 18, 2018
1 parent 58a24c5 commit bc9f9e5
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
4 changes: 4 additions & 0 deletions cpp/apidoc/HDFS.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ export CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath --glob`
* `ARROW_LIBHDFS_DIR` (optional): explicit location of `libhdfs.so` if it is
installed somewhere other than `$HADOOP_HOME/lib/native`.

To accommodate distribution-specific nuances, the `JAVA_HOME` variable may be
set to the root path for the Java SDK, the JRE path itself, or to the directory
containing the `libjvm` library.

### Mac Specifics

The installed location of Java on OS X can vary, however the following snippet
Expand Down
4 changes: 2 additions & 2 deletions cpp/src/arrow/io/hdfs-internal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ static std::vector<fs::path> get_potential_libjvm_paths() {
file_name = "jvm.dll";
#elif __APPLE__
search_prefixes = {""};
search_suffixes = {"", "/jre/lib/server"};
search_suffixes = {"", "/jre/lib/server", "/lib/server"};
file_name = "libjvm.dylib";

// SFrame uses /usr/libexec/java_home to find JAVA_HOME; for now we are
Expand Down Expand Up @@ -175,7 +175,7 @@ static std::vector<fs::path> get_potential_libjvm_paths() {
"/usr/lib/jvm/default", // alt centos
"/usr/java/latest", // alt centos
};
search_suffixes = {"/jre/lib/amd64/server"};
search_suffixes = {"", "/jre/lib/amd64/server", "/lib/amd64/server"};
file_name = "libjvm.so";
#endif
// From direct environment variable
Expand Down

0 comments on commit bc9f9e5

Please sign in to comment.