Linux安装OpenJDK11本地运行Google CTS测试

一、问题描述

为了在不连接外网情况下能够跑Google CTS测试,需要安装测试环境,本地在执行测试脚本时:./cts-tradefed

会报错,如下:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/compatibility/common/tradefed/command/CompatibilityConsole has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

这是属于JDK没有正确安装Google测试所需的JDK11环境。

查看java和javac来查看版本,发现java和javac版本一致均为1.8.0_292,但都不是jdk11,导致无法在本地运行CTS环境。

查看当前java和javac的安装位置,如下:

whereis java  --》/usr/bin/java
whereis javac  --》/usr/bin/javac

到/usr/bin/下查看java的链接情况

ls -ll|grep -i java

这里发现java和javac是链接到其他位置的,而非所想要的jdk11。.

二、环境安装步骤

2.1 下载JDK并解压

下载网址:https://jdk.java.net/archive/

2.2 本地创建安装目录

创建/usr/local/java目录。

执行mkdir -p /usr/local/java命令(-p 可以创建多级文件,即上级文件夹不存在时会自动创建) ,这个目录用来存放安装的程序和文件,如果已有就跳过。

再把下载的jdk-11.0.2文件放到/usr/local/java/下。

cp -rn jdk-11.0.2 /usr/local/java/

2.3 配置java环境变量

需要root环境 : su

编辑配置文件,执行命令:

gedit /etc/profile 

一般/etc/profile 默认环境为:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))

# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).



if [ "$PS1" ]; then

  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then

    # The file bash.bashrc already sets the default PS1.

    # PS1='\h:\w\$ '

    if [ -f /etc/bash.bashrc ]; then

      . /etc/bash.bashrc

    fi

  else

    if [ "`id -u`" -eq 0 ]; then

      PS1='# '

    else

      PS1='$ '

    fi

  fi

fi



if [ -d /etc/profile.d ]; then

  for i in /etc/profile.d/*.sh; do

    if [ -r $i ]; then

      . $i

    fi

  done

  unset i

fi
#在底部添加!!!jdk配置一般在最下面(之前默认安装的1.8.0_292)

export JAVA_HOME=/usr/local/Java/jdk-11.0.2 #所下载的jdk文件路径

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

修改完成后, 使配置文件生效。

source /etc/profile

2.4 建立java和javac的新软链接

进入/usr/bin/java/中,ls -ll|grep -i java 发现java和javac都是通过软链接指向了其他位置,导致无法使用安装的jdk11。

删除两个软连接,建立新的软连接到所下载的jdk11,如果不先删除软连接而直接建立会报错,如下:

ln: failedto create symbolic link '/usr/bin/javac': File exists

使用指令建立新的软链接:

rm -rf /usr/bin/java
ln -s $JAVA_HOME/bin/java /usr/bin/java
rm -rf /usr/bin/javac
ln -s /usr/local/java/jdk-11.0.2/bin/javac /usr/bin/javac

再给java和javac权限,到/usr/local/java/jdk-11.0.2/bin中:不给的话使用java时会报错,如下:

bash:/usr/bin/java: Permission denied

chmod 777 java
chmod 777 javac
或者直接
chmod 777 /usr/bin/java
chmod 777 /usr/bin/javac

ls -ll /usr/bin/|grep -i java 查看java和javac的软链接已经建立完成。

这样再查看相关信息,发现就是正确的,即为所安装的openjdk version"11.0.2" 2019-01-15,同时也可以成功直接运行CTS环境了。

猜你喜欢

转载自blog.csdn.net/qq_44136347/article/details/128919658