一、JDK选择和使用
安装完Oracle Linux9.6,同时使用rpm包安装Oracle 23 ai free后,
将面临sqlcl程序无法使用和java无法使用,需要相应进行变量配置问题。
1、java 环境运行不存在,Oracle 23ai free安装后默认安装JDK 11
/opt/oracle/product/23ai/dbhomeFree/jdk/bin/java
bash
[oracle@OL96TC bin]$ java -version
bash: java: command not found...
Packages providing this file are:
'java-11-openjdk-headless'
'java-17-openjdk-headless'
[oracle@OL96TC bin]$ exit
logout
[root@OL96TC ~]# java -version
bash: java: command not found...
Packages providing this file are:
'java-11-openjdk-headless'
'java-17-openjdk-headless'
[root@OL96TC ~]# java --version
bash: java: command not found...
Packages providing this file are:
'java-11-openjdk-headless'
'java-17-openjdk-headless'
[root@OL96TC ~]# which java
/usr/bin/which: no java in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
[root@OL96TC ~]# find / -name java
find: '/proc/82056': No such file or directory
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/usr/share/bash-completion/completions/java
/opt/oracle/product/23ai/dbhomeFree/jdk/bin/java
/opt/oracle/product/23ai/dbhomeFree/xdk/doc/java
[root@OL96TC ~]# cd /opt/oracle/product/23ai/dbhomeFree/jdk/bin/java
-bash: cd: /opt/oracle/product/23ai/dbhomeFree/jdk/bin/java: Not a directory
[root@OL96TC ~]# ./opt/oracle/product/23ai/dbhomeFree/jdk/bin/java -version
-bash: ./opt/oracle/product/23ai/dbhomeFree/jdk/bin/java: No such file or directory
[root@OL96TC ~]# cd /opt/oracle/product/23ai/dbhomeFree/jdk/bin/
2、随着Oracle 23 ai free默认安装的sqlcl不生效,无法使用
bash
[oracle@OL96TC bin]$ pwd
/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin
[oracle@OL96TC bin]$ cd ..
[oracle@OL96TC sqlcl]$ ll
total 8
drwxr-xr-x. 2 oracle oinstall 17 Jun 3 19:57 bin
drwxr-x---. 3 oracle oinstall 4096 Jun 3 19:57 lib
[oracle@OL96TC sqlcl]$ cd bin
[oracle@OL96TC bin]$ ll
total 32
-rwxr-xr-x. 1 oracle oinstall 29653 Jan 1 2023 sql
[oracle@OL96TC bin]$ ./sql /nolog
Error: SQLcl requires Java 11 and above to run.
Found Java version no_java.
Please set JAVA_HOME to appropriate version.
3、Oracle Linux 9安装后默认的位置和变量设置
bash
[oracle@OL96TC ~]$ export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/jdk/bin
[oracle@OL96TC ~]$ java -version
java version "11.0.27" 2025-04-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.27+8-LTS-232)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.27+8-LTS-232, mixed mode)
4、修改oracle用户在的.bash_profile
--如果是手工安装的java-11或是java-17的OPENJDK设置下一行,
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
bash
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export ORACLE_SID=FREE
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin
--如果是手工安装的java-11或是java-17的OPENJDK设置下一行,
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$PATH:$JAVA_HOME/bin
4.1 不单独使用dnf安装JAVA,直接使用Oracle 23 ai free安装后的JDK
export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/jdk/bin
bash
[oracle@OL96TC ~]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export ORACLE_SID=FREE
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin
export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/jdk/bin
export PATH=$PATH:$JAVA_HOME/bin
二、Linux 上JAVA安装和变量设定
在Linux 无论是Redhat、Oracle Linux、Almalinux系列安装JAVA,均可行的办法。
验证是在Oracle Linux 9上安装JDK并配置环境变量的步骤如下:
1. 更新系统
sudo dnf update -y
2. 清理旧版本环境
在安装新JDK前清理旧版本环境非常重要,需要完整安全地清理:
- 列出已安装的JDK相关包
bash
dnf list installed | grep -E 'java|jdk|openjdk'
--rpm查阅
rpm -qa | grep -E 'java|jdk|openjdk'
- 卸载所有JDK相关包-生产环境谨慎
bash
# 批量卸载(务必谨慎操作,会删除所有Java相关包)
sudo dnf remove $(rpm -qa | grep -E 'java|jdk|openjdk') -y
# 或单独卸载指定包比如删除1.8.0
sudo dnf remove java-1.8.0-openjdk java-11-openjdk java-17-openjdk -y
- 清理残留文件
bash
# 检查可能残留的目录
ls -l /usr/lib/jvm/
ls -l /usr/java/
# 手动删除残留目录
sudo rm -rf /usr/lib/jvm/java-*
sudo rm -rf /usr/java/*
- 清除alternatives配置
在 Linux 系统中,alternatives 是一个用于管理系统中多个功能相似的软件版本的命令行工具,特别适用于管理 Java 环境等需要版本切换的场景。
bash
# 列出Java相关alternatives配置
sudo alternatives --list | grep java
# 逐个删除(以java命令为例)--未使用
sudo alternatives --remove java /path/to/old/jre/bin/java
- 检查环境变量残留
bash
# 查看环境变量配置
cat /etc/profile.d/*.sh | grep JAVA_HOME
cat ~/.bashrc | grep JAVA_HOME
# 手动注释或删除旧配置
sudo nano /etc/profile.d/java.sh
# 上一行需要对应删除或注释相关行
nano ~/.bashrc
# 上一行需要对应删除或注释相关行
- 应用清理
bash
source /etc/profile
source ~/.bashrc
- 验证系统是否还存在Java
bash
which java
# 应返回无结果
java -version
# 应提示"command not found"
清理完成后,可继续执行JDK安装流程
注意事项:
- 1.生产环境谨慎操作,确保卸载不会影响现有服务
- 2.某些应用可能自带JRE,需单独处理
3. dnf搜索可用的JDK版本
bash
dnf search jdk
# 或搜索OpenJDK 有些版权问题,一般都用这个OPENJDK
dnf search openjdk
4. 安装JDK,选择11还是17,推荐lts版本
bash
sudo dnf install java-11-openjdk-devel -y
#选择11还是选择17,甚至目前有21
sudo dnf install java-17-openjdk-devel -y
5. 验证安装
bash
java -version
javac -version
6. 查找JDK安装路径
bash
find / -name 'java' -type f
type java
which java
ls /usr/lib/jvm/
# 通常路径类似11,17,21等:/usr/lib/jvm/java-17-openjdk-<版本号>
7. 配置全局环境变量
创建配置文件:
bash
sudo vi /etc/profile.d/java.sh
输入以下内容(替换为上面查询到的JDK路径):
bash
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$PATH:$JAVA_HOME/bin
保存后执行:
bash
source /etc/profile.d/java.sh
- 验证环境变量
bash
echo $JAVA_HOME
echo $PATH
java -version
JDK已安装并配置完成,可正常使用Java环境,
如需其他版本(如JDK 21/17/11/8),将上述步骤中的17替换为对应版本号即可。