dnf 安装openjdk1.8
AnolisOS 可以使用 dnf 或者 yum 进行软件安装,两者指令结构基本相同,推荐使用dnf。
dnf --version #查看 dnf版本
4.7.0
Installed: dnf-0:4.7.0-8.0.1.an8.noarch at Mon 04 Jul 2022 05:16:37 AM GMT
Built : OpenAnolis Community at Wed 18 May 2022 08:05:12 AM GMT
Installed: rpm-0:4.14.3-23.0.1.an8.x86_64 at Mon 04 Jul 2022 05:16:24 AM GMT
Built : OpenAnolis Community at Wed 18 May 2022 11:24:53 AM GMT
使用dnf查找jdk
dnf search java|grep jdk
检查是否已经安装了openjdk,查看具体版本
# java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
使用dnf安装openjdk1.8
dnf install java-1.8.0-openjdk
Repository epel is listed more than once in the configuration
上次元数据过期检查:2:08:27 前,执行于 2022年09月22日 星期四 13时52分44秒。
软件包 java-1.8.0-openjdk-1:1.8.0.342.b07-2.an8_6.x86_64 已安装。
依赖关系解决。
============================================================================================================================================================================
软件包 架构 版本 仓库 大小
============================================================================================================================================================================
升级:
java-1.8.0-openjdk x86_64 1:1.8.0.345.b01-1.an8_6 AppStream 347 k
java-1.8.0-openjdk-devel x86_64 1:1.8.0.345.b01-1.an8_6 AppStream 9.8 M
java-1.8.0-openjdk-headless x86_64 1:1.8.0.345.b01-1.an8_6 AppStream 34 M
事务概要
============================================================================================================================================================================
升级 3 软件包
总下载:44 M
确定吗?[y/N]:
已升级:
java-1.8.0-openjdk-1:1.8.0.345.b01-1.an8_6.x86_64 java-1.8.0-openjdk-devel-1:1.8.0.345.b01-1.an8_6.x86_64 java-1.8.0-openjdk-headless-1:1.8.0.345.b01-1.an8_6.x86_64
完毕!
[root@anolis ~]# java -version
openjdk version "1.8.0_345"
OpenJDK Runtime Environment (build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (build 25.345-b01, mixed mode)
可见新版本的 openjdk1.8已经安装成功。
查看安装路径,默认安装路径在/usr/lib/jvm/下边,
如/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-2.an8_6.x86_64
[root@anolis ~]# which java
/usr/bin/java
[root@anolis ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-2.an8_6.x86_64
[root@anolis ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 9月 22 16:04 /usr/bin/java -> /etc/alternatives/java
[root@anolis ~]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 73 9月 22 16:04 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64/jre/bin/java
[root@anolis ~]# ll /usr/lib/jvm/
总用量 0
lrwxrwxrwx 1 root root 26 9月 22 16:04 java -> /etc/alternatives/java_sdk
lrwxrwxrwx 1 root root 32 9月 22 16:04 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx 1 root root 40 9月 22 16:04 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
drwxr-xr-x 7 root root 135 9月 22 16:04 java-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64
lrwxrwxrwx 1 root root 34 9月 22 16:04 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx 1 root root 21 9月 22 16:04 jre -> /etc/alternatives/jre
lrwxrwxrwx 1 root root 27 9月 22 16:04 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx 1 root root 35 9月 22 16:04 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx 1 root root 51 9月 14 11:30 jre-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64 -> java-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64/jre
lrwxrwxrwx 1 root root 29 9月 22 16:04 jre-openjdk -> /etc/alternatives/jre_openjdk
查看java是否可用:javac
# javac
-bash: javac: command not found
错误原因:默认安装完只有运行环境,java安装目录下只有jre文件夹
安装开发环境dnf install java-1.8.0-openjdk-devel.x86_64
安装完可看到java安装目录下出现bin、lib等文件夹:
[root@anolis ~]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64/
[root@anolis java-1.8.0-openjdk-1.8.0.345.b01-1.an8_6.x86_64]# ll
总用量 184
-rw-r--r-- 1 root root 1522 9月 14 11:29 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 4096 9月 22 16:04 bin
drwxr-xr-x 3 root root 132 9月 22 16:04 include
drwxr-xr-x 4 root root 95 9月 22 16:04 jre
drwxr-xr-x 3 root root 144 9月 22 16:04 lib
-rw-r--r-- 1 root root 19274 9月 14 11:29 LICENSE
drwxr-xr-x 2 root root 204 9月 22 16:04 tapset
-rw-r--r-- 1 root root 157063 9月 14 11:29 THIRD_PARTY_README
再次输入javac说明安装成功
[root@anolis ~]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名
查看环境变量
vi /etc/profile
在profile文件末尾查看如下内容:
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-2.an8_6.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
使环境变量生效:source /etc/profile
[root@anolis ~]# source /etc/profile
[root@anolis ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-2.an8_6.x86_64
二进制安装jdk1.8
上传jdk-8u11-linux-x64.tar.gz 安装包
解压jdk文件
tar -xzvf jdk-8u11-linux-x64.tar.gz -C /usr/local/
添加环境变量
echo 'export JAVA_HOME=/usr/local/jdk1.8.0_11' | sudo tee -a /etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' | sudo tee -a /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' | sudo tee -a /etc/profile
使变量立即生效
source /etc/profile
# java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
[root@anolis ~]# javac
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-parameters Generate metadata for reflection on method parameters
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-h <directory> Specify where to place generated native header files
-implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-profile <profile> Check that API used is available in the specified profile
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
-Werror Terminate compilation if warnings occur
@<filename> Read options and filenames from file