vignettes/Changing_java_version_linux.Rmd
Changing_java_version_linux.Rmd
The JavaStics interface evolution from JavaSTICS-1.5.0 led to use a more recent Java virtual machine (at least version 11) which is not compatible with an older version (i.e. java 8).
If the default version of java is older than 11, a java 11 can be installed and solutions exist for switching between versions.
These information may be partially specific of installation procedures on Debian like distributions and can be easily adapted for other linux OS types.
This is the simplest solution and allows to avoid switching between versions. But, it is leading to use additional arguments for some R functions relying on JavaSTICS use in background (i.e. run_javastics, gen_xml2txt, for example).
alias java11=/usr/lib/jvm/java-11-openjdk-amd64/bin/java
This can be added in the .bashrc
file for permanent
use.
The following command under Ubuntu allows to manage switching easily
sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode * 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Pressto keep the current choice[*], or type selection number:0
After the Java 11 installation, and if it is not the default version known by the system, switching to this version can be done with a script like the following one. It can be ran either from R or a shell terminal.
#!/bin/bash
# Changing latest installed Java version to Java version 11
echo "The current Java version is : "
java -version
version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if ! [ -z $(echo $version | grep ^11) ];then
echo "The Java version is already Java 11"
exit 0
fi
echo "Changing Java version to Java 11"
if [ -e /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java ];then
sudo rm /usr/bin/java
sudo ln -s /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java /usr/bin/java
fi
version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [ -z $(echo $version | grep ^11) ];then
echo
echo "Java 11 is not installed !"
exit 1
fi
echo "The Java version is now : "
java -version
After that,
the SticsOnR package functions using the JavaSTICS 1.5.0 command line interface can be used.
For restoring the initial Java version, a script like the following can be ran.
#!/bin/bash
# Changing to the previous installed Java version
echo "Current Java version is : "
java -version
version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [ -z $(echo $version | grep ^11) ];then
echo
echo "The Java version is not Java 11"
exit 0
fi
#ls -ald /usr/lib/jvm/* | grep ^d | grep java-
last_version=$(/etc/alternatives/java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if ! [ -z $(echo $last_version | grep ^11) ];then
echo
echo "No more recent version of Java is available on the system !"
exit 0
fi
sudo rm /usr/bin/java
sudo ln -s /etc/alternatives/java /usr/bin/java
echo "JAVA version is now : "
java -version