linux安装JDK以及配置环境

安装JDK

$apt-cache search openjdk    展示能看到的jdk列表
$sudo apt-get install openjdk-17-jdk  安装
$java -version   查看安装结果

配置环境变量

步骤3~步骤5都是为了找到文件路径且确定文件类型,真正影响环境变量设置的事6,7行
1.输入命令:echo $java_home
返回空行;

2.which javac
返回:/usr/bin/javac

3.file /usr/bin/javac
返回:/usr/bin/javac: symbolic link to /etc/alternatives/javac

4.file /etc/alternatives/javac
返回:/etc/alternatives/javac: symbolic link to /usr/lib/jvm/java-8-openjdk-i386/bin/javac

5.file /usr/lib/jvm/java-8-openjdk-i386/bin/javac
返回:/usr/lib/jvm/java-8-openjdk-i386/bin/javac: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a8eeb948df0418fc8f046910c73713f2b6697a9a, stripped

6.sudo echo export JAVA_HOME=”/usr/lib/jvm/java-8-openjdk-i386”>>~/.bashrc
输入密码;

7)source ~/.bashrc

8)测试命令:gedit ~/.bashrc
查看打开的文件末尾是否成功加入java_home



**解析:命令**

这一系列的操作是在确定Java编译器的位置,并设置JAVA_HOME环境变量。具体来说:

  1. echo $java_home:这个命令用于显示java_home环境变量的值。由于返回空行,说明这个环境变量当前没有设置或者没有被正确导出。

  2. which javac:这个命令用于查找javac命令在PATH环境变量中指向的完整路径。返回/usr/bin/javac说明javac命令在/usr/bin目录下。

  3. file /usr/bin/javac:这个命令用于查看/usr/bin/javac文件的类型。结果显示它是一个指向/etc/alternatives/javac的符号链接。

  4. file /etc/alternatives/javac:继续查看符号链接指向的文件类型,结果显示它又是一个指向/usr/lib/jvm/java-8-openjdk-i386/bin/javac的符号链接。

  5. file /usr/lib/jvm/java-8-openjdk-i386/bin/javac:最终查看到javac可执行文件的实际位置,它是一个32位的ELF可执行文件。

  6. sudo echo export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-i386/bin">>~/.bashrc:这个命令尝试将JAVA_HOME环境变量设置到用户的.bashrc文件中。但是这里有个错误,因为JAVA_HOME应该设置为Java安装目录,而不是javac的二进制文件路径。正确的设置应该是指向Java的安装根目录,比如/usr/lib/jvm/java-8-openjdk-i386

  7. source ~/.bashrc:这个命令用于重新加载.bashrc文件,使得刚才添加的环境变量设置生效。

  8. gedit ~/.bashrc:使用gedit文本编辑器打开.bashrc文件,用于查看或编辑文件内容。

这一系列操作的目的是要确定Java编译器的实际安装位置,并尝试设置JAVA_HOME环境变量,以便在其他地方可以引用Java的安装目录。但是,在设置JAVA_HOME时犯了一个常见的错误,即将其设置为了javac的路径而不是Java的安装目录。正确的JAVA_HOME设置应该指向Java的安装根目录,例如:

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-i386"

然后在需要时,你可以通过$JAVA_HOME/bin/javac来引用javac命令。同时,确保将$JAVA_HOME/bin添加到你的PATH环境变量中,这样你就可以直接通过javac来调用编译器,而不需要指定完整路径。