Install RDAVIDWebService

An R Package for retrieving data from DAVID into R objects using Web Services API.

Refer to this Bioconductor thread for some additional installation instructions from the RDavidWebService developer.

Java >= 1.8 and OpenSSL >= 1.0.2.d are required.

openssl version
java -version

Upgrade Java

Upgrade Java to the latest version with Homebrew.

brew cask install java

The latest JDK will be installed at /Library/Java/JavaVirtualMachines.

Upgrade OpenSSL

Compile the latest version from source. Refer to my build script as a reference, available in the koopa package.

Update cacerts file

cd ~/
echo -n | openssl s_client -connect | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ncifcrf.cert

Check that the download was successful.

openssl x509 -in ncifcrf.cert -text

Find your cacerts file.

sudo find /Library/Java/JavaVirtualMachines -name cacerts

You should see something that matches /Library/Java/JavaVirtualMachines/jdk{VERSION}.jdk. Now with that virtual machine, we’re going to copy the cacerts file to the home directory, add the DAVID certificate, and copy back.

sudo cp /Library/Java/JavaVirtualMachines/jdk$VERSION.jdk/Contents/Home/jre/lib/security/cacerts .
sudo keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias david -file ncifcrf.cert
# The certificate should be added to the keystore.
# If successful, copy the modified `cacerts` file to the virtual machine.
sudo cp cacerts /Library/Java/JavaVirtualMachines/jdk$VERSION.jdk/Contents/Home/jre/lib/security/cacerts

Now update the Java configuration in R.

R CMD javareconf

Install RDAVIDWebService.

.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

Note that the Java version here should match the JDK above. If this looks good, RDAVIDWebService should install correctly.

# try `http://` if `https://` URLs are not supported

rJava issues

If you get the following error message, there are two ways to fix the problem on macOS.

Error: package or namespace load failed for ‘RDAVIDWebService’:
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '~/R/library/rJava/libs/':
  dlopen(~/R/library/rJava/libs/, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: ~/R/library/rJava/libs/
  Reason: image not found

First, you can symlink the libjvm.dylib file into /usr/local/lib.

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

Second, you can explicitly load the libjvm.dylib file in R before loading rJava.


We prefer the first approach but it requires sudo permission elevation.