如何查找YUM安装的JAVA_HOME环境变量详解

 更新时间:2017年10月27日 09:44:56   作者:铁锚  
这篇文章主要给大家介绍了关于如何查找YUM安装的JAVA_HOME环境变量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

开发中很多需要javac 的程序依赖 JAVA_HOME环境变量.

如果是手工下载源码安装的JDK,很容易知道JAVA_HOME的目录. 例如

whereis javac
javac: /usr/local/jdk1.8.0_74/bin/javac

那么对应的 JAVA_HOME 为 /usr/local/jdk1.8.0_74.

而 YUM 安装的 jdk, 不需要配置 PATH, 因为已经自动使用软连接做好了。

echo $PATH
javac -version

1. YUM安装JDK

1.1 查找 可用的JDK

sudo yum list -y java*

然后可用看到类似下面这样的输出(省略部分…):

...
Available Packages

java-1.7.0-openjdk.x86_64
java-1.7.0-openjdk-demo.x86_64
java-1.7.0-openjdk-devel.x86_64
java-1.7.0-openjdk-javadoc.noarch
java-1.7.0-openjdk-src.x86_64
java-1.8.0-openjdk.x86_64
java-1.8.0-openjdk-debug.x86_64
java-1.8.0-openjdk-demo.x86_64
java-1.8.0-openjdk-demo-debug.x86_64
java-1.8.0-openjdk-devel.x86_64
java-1.8.0-openjdk-devel-debug.x86_64
java-1.8.0-openjdk-headless.x86_64
java-1.8.0-openjdk-headless-debug.x86_64
java-1.8.0-openjdk-javadoc.noarch
java-1.8.0-openjdk-javadoc-debug.noarch
java-1.8.0-openjdk-src.x86_64
java-1.8.0-openjdk-src-debug.x86_64

根据需要, 安装 JDK1.7 或者 JDK1.8, 当前1.8已经很稳定了,推荐JDK1.8

1.2 安装 JDK

安装 JDK1.7 的命令如下:

sudo yum install -y java-1.7.0-openjdk*

安装 JDK1.8 的命令如下:

sudo yum install -y java-1.8.0-openjdk*

2. 查找 JDK1.7 的 JAVA_HOME

2.1 查找 javac :

whereis javac
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz

可以看到, /usr/bin/javac, 一般来说 /usr/bin 默认加入了 PATH 路径,所以可以直接执行.

然后一路跟踪,看软连接指向的位置( ll 是 ls -l 的快捷命令):

ll /usr/bin/javac
… /usr/bin/javac -> /etc/alternatives/javac

然后继续:

ll /etc/alternatives/javac

JDK1.7 大致是这个样子:

… /etc/alternatives/javac -> /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac

再继续:

ll /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac

不再是软连接。 结合这个地址可以分析得到, JAVA_HOME 的值应该是 /usr/lib/jvm/java-1.7.0-openjdk.x86_64。

当然,使用这个地址就可以了!

如果继续下一步查看,可以看到具体的版本号:

ll /usr/lib/jvm/java-1.7.0-openjdk.x86_64
… /usr/lib/jvm/java-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.79.x86_64

使用下面的命令即可看到真实的目录, 但一般不使用下面的具体版本号,升级什么的可能会出问题。

ll /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64

具体内容类似下面这样:

ll /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64
total 43952
-r--r--r-- 1 root root 1503 Apr 15 2015 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 4096 Dec 25 2015 bin
drwxr-xr-x 10 root root 4096 May 2 2015 demo
drwxr-xr-x 3 root root 4096 May 2 2015 include
drwxr-xr-x 4 root root 4096 May 2 2015 jre
drwxr-xr-x 3 root root 4096 May 3 2015 lib
-r--r--r-- 1 root root 19263 Apr 15 2015 LICENSE
drwxr-xr-x 8 root root 4096 May 2 2015 sample
-rw-r--r-- 1 root root 44775741 Apr 15 2015 src.zip
drwxr-xr-x 2 root root 4096 May 2 2015 tapset
-r--r--r-- 1 root root 172264 Apr 15 2015 THIRD_PARTY_README

2.2 将 JAVA_HOME 加入环境变量:

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64

当然, export 只是临时的。下次重启后就没了。

可以添加到rc文件,比如 /etc/rc.d/rc.local 之中。

当然,可以使用 vim 编辑, 或者是 echo >> 命令

jhometip='# add JAVA_HOME'
jhomescript='export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64'
sudo echo $jhometip >> /etc/rc.d/rc.local
sudo echo $jhomescript >> /etc/rc.d/rc.local

这样一般就设置好了。

3. 查找 JDK1.8 的 JAVA_HOME

3.1 查找 javac :

whereis javac
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz

可以看到, /usr/bin/javac, 一般来说 /usr/bin 默认加入了 PATH 路径,所以可以直接执行.

然后一路跟踪,看软连接指向的位置( ll 是 ls -l 的快捷命令):

ll /usr/bin/javac
… /usr/bin/javac -> /etc/alternatives/javac

然后继续:

ll /etc/alternatives/javac

JDK1.8 大致是这个样子:

… /etc/alternatives/javac ->

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/bin/javac

再继续:

ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/bin/javac

不再是软连接。 结合这个地址可以分析得到, JAVA_HOME 的值应该是 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64。

使用这个地址就可以了!

如果继续下一步查看:

ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64

具体内容类似下面这样:

total 16
drwxr-xr-x. 2 root root 4096 Sep 21 23:08 bin
drwxr-xr-x. 3 root root 4096 Sep 21 23:08 include
drwxr-xr-x. 4 root root 26 Sep 21 23:08 jre
drwxr-xr-x. 3 root root 4096 Sep 21 23:08 lib
drwxr-xr-x. 2 root root 4096 Sep 21 23:08 tapset

3.2 查看软连接:

查看 jvm 目录:

ll /usr/lib/jvm

则可以看到很多软连接:

java -> /etc/alternatives/java_sdk
java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64
java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64-debug
java-openjdk -> /etc/alternatives/java_sdk_openjdk
jre -> /etc/alternatives/jre
jre-1.8.0 -> /etc/alternatives/jre_1.8.0

类似这样的,不管 jre 开头的部分,可以看到 /etc/alternatives/java_sdk_1.8.0 这样的目录;

执行 :

ll /etc/alternatives/java_sdk_1.8.0
ll /etc/alternatives/java_sdk

然后发现, 这一堆链接都是指向上面的 JAVA_HOME 路径:

/etc/alternatives/java_sdk_1.8.0 -> 
 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64

所以,可以使用其中之一作为 JAVA_HOME 环境变量的值。

说明: 既然安装了,基本上服务器上就不会频繁变更. 如果有变更,则查找并修正即可。

3.3 将 JAVA_HOME 加入环境变量:

export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0

当然, export 只是临时的。下次重启后就没了。

可以添加到rc文件,比如 /etc/rc.d/rc.local 之中。

当然,可以使用 vim 编辑, 或者是 echo >> 命令

jhometip='# add JAVA_HOME'
jhomescript='export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0'
sudo echo $jhometip >> /etc/rc.d/rc.local
sudo echo $jhomescript >> /etc/rc.d/rc.local

这样一般就设置好了。

最后如果Java中设置JAVA_HOME无效可以参考:https://www.jb51.net/article/122632.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java如何替换字符

    Java如何替换字符

    文章介绍了Java中String类的replace()方法及其变体replaceFirst()的使用,包括如何替换单个字符、第一次出现的字符以及多个字符,通过示例展示了如何处理字符串中的特殊字符和空格
    2024-11-11
  • 基于mybatis一对多查询内层排序的问题

    基于mybatis一对多查询内层排序的问题

    这篇文章主要介绍了基于mybatis一对多查询内层排序的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • 如何通过源码了解Java的自动装箱拆箱详解

    如何通过源码了解Java的自动装箱拆箱详解

    装箱就是把基本类型转换成包装类,拆箱就是把包装类转换成基本类型,下面这篇文章主要给大家介绍了关于如何通过源码了解Java的自动装箱拆箱的相关资料,需要的朋友可以参考下
    2022-04-04
  • Spring mvc拦截器实现原理解析

    Spring mvc拦截器实现原理解析

    这篇文章主要介绍了Spring mvc拦截器实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java中的线程死锁解读

    Java中的线程死锁解读

    这篇文章主要介绍了Java中的线程死锁解读,死锁就是指两个或两个以上的线程在抢占资源时,造成相互等待的现象,称为死锁,在没有外力的情况下是会一直等待无法执行下去,需要的朋友可以参考下
    2024-01-01
  • Java抢红包的红包生成算法

    Java抢红包的红包生成算法

    现在日常生活中抢红包已经成了日常游戏,本篇文章主要介绍了Java抢红包的红包生成算法,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • 浅谈Spring Boot日志框架实践

    浅谈Spring Boot日志框架实践

    这篇文章主要介绍了浅谈Spring Boot日志框架实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java二维数组简单定义与使用方法示例

    Java二维数组简单定义与使用方法示例

    这篇文章主要介绍了Java二维数组简单定义与使用方法,结合实例形式简单分析了java二维数组的定义、使用方法及相关注意事项,需要的朋友可以参考下
    2017-10-10
  • springboot使用maven实现多环境运行和打包问题

    springboot使用maven实现多环境运行和打包问题

    这篇文章主要介绍了springboot使用maven实现多环境运行和打包问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java System类详解_动力节点Java学院整理

    Java System类详解_动力节点Java学院整理

    System类是jdk提供的一个工具类,有final修饰,不可继承,由名字可以看出来,其中的操作多数和系统相关。这篇文章主要介绍了Java System类详解_动力节点Java学院整理,需要的朋友可以参考下
    2017-04-04

最新评论