您的位置:首页 > 运维架构 > Linux

Linux如何查看JDK的安装路径

2015-12-17 16:03 573 查看

1Linux目录结构

即使这是个菜鸟级的问题,也经常难住老鸟。我就见过很资深的程序员把JDK不合适地安装到/home目录下。虽然不一定有最正确的安装位置,但一定有不适当的安装位置。为了确定我们到底应该把JDK安装在哪里,首先要了解一下Unix/Linux的目录结构。

[plain]view
plaincopy

/bin用来贮存用户命令。/usr/bin也被用来贮存用户命令。

/sbin许多系统命令(例如shutdown)的贮存位置。/usr/sbin中也包括了许多系统命令。

/root根用户(超级用户)的主目录。

/mnt该目录中通常包括系统引导后被挂载的文件系统的挂载点。比如,默认的光盘挂载点是/mnt/cdrom/。可以为U盘建一个挂载点:mkdir/mnt/usb。

/boot包括内核和其它系统启动期间使用的文件,最大不超过200M。通常我为/boot建一个primary分区是1G。

/lost+found被fsck用来放置零散文件(没有名称的文件)。

/lib包含许多被/bin和/sbin中的程序使用的库文件。目录/usr/lib中含有更多用于用户程序的库文件。/lib目录下放置的是/bin和/sbin目录下程序所需的库文件。简单说,/lib是内核级的;/usr/lib是系统级的;/usr/local/lib是用户级的。仅仅被/usr目录下的程序所使用的共享库不必放到/lib目录下。只有/bin和/sbin下的程序所需要的库有必要放到/lib目录下。

/dev贮存设备文件。

/etc包含许多配置文件和目录。

/var用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件,虚拟机镜像文件等。

/usr包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。

/proc一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。

/initrd用来在计算机启动时挂载initrd.img映像文件的目录以及载入所需设备模块的目录。不要删除/initrd目录。如果你删除了该目录后再重新引导RedHatLinux时,你将无法引导你的计算机。

/tmp用户和程序的临时目录。/tmp给予所有系统用户读写权。

/home用户主目录的默认位置。

/opt可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易地安装和卸装他们的软件包。

在传统的unix系统中,/usr通常只包含系统发行时自带的程序,而/usr/local则是本地系统管理员用来自由添加程序的目录。这里有一条严厉而牢固的规则:除非在里面创建目录,unix发行版不得使用/usr/local。

对于Linux发行版,如RedHat,Debian等等,一个可能的规定是:/usr目录只能由发行版的软件包管理工具负责管理,而对/usr/local却没有这样做。正是因为采用这种方式,软件包管理工具的数据库才能知道在/usr目录内的每一个文件。

2配置环境JAVA变量

有3种方式配置JAVA环境变量。

2.1/etc/profile

如果你的计算机仅仅作为开发使用时推荐使用这种方法.所有用户的shell都有权使用这些环境变量。修改/etc/profile文件,执行下面的语句:

[plain]view
plaincopy

$sudo-s

#echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>/etc/profile

#echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>/etc/profile

#echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>/etc/profile

切换到任何一个用户,执行下面这个命令,环境变量的更改立即生效:

#source/etc/profile

检查JAVA环境变量更改是否生效:

$java-version

2.2~/.profile

这个是最安全的方法,控制JAVA到当前用户。如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.profile,如下:

[plain]view
plaincopy

$cd~/

$echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>./.profile

$echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>./.profile

$echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>./.profile

$source./.profile

$java-version

or

$java

2.3/etc/profile.d/java.sh

这种方式为所有用户增加JAVA环境变量,并且一启动就生效。强烈不建议这个方式,除非在你个人开发的计算机上。

[plain]view
plaincopy

$sudo-s

#echo'#addjavaenvironmentstoallusers'>/etc/profile.d/java.sh

#chmod755/etc/profile.d/java.sh

#echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>/etc/profile.d/java.sh

#echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>/etc/profile.d/java.sh

#echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>/etc/profile.d/java.sh

#shutdown-rnow

转自:http://blog.csdn.net/cheungmine/article/details/8289335
如何在一台Linux服务器上查找JDK的安装路径呢?有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢?下面总结了一下如何查找JDK安装路径的方法.

1:echo$JAVA_HOME
使用$JAVA_HOME的话能定位JDK的安装路径的前提是配置了环境变量$JAVA_HOME,否则如下所示,根本定位不到JDK的安装路径
[root@localhost~]#java-version
javaversion"1.7.0_65"
OpenJDKRuntimeEnvironment(rhel-2.5.1.2.el6_5-x86_64u65-b17)
OpenJDK64-BitServerVM(build24.65-b04,mixedmode)
[root@localhost~]#echo$JAVA_HOME




2:whichjava
首先要申明一下whichjava是定位不到安装路径的。whichjava定位到的是java程序的执行路径。网上的资料都是人云亦云,完全不去思考。那么怎么定位到java的安装路径呢?下面我们来看看例子吧,如下所示:

[root@localhost~]#java-version


javaversion"1.7.0_65"


OpenJDKRuntimeEnvironment(rhel-2.5.1.2.el6_5-x86_64u65-b17)


OpenJDK64-BitServerVM(build24.65-b04,mixedmode)


[root@localhost~]#whichjava


/usr/bin/java


[root@localhost~]#ls-lrt/usr/bin/java


lrwxrwxrwx.1rootroot22Aug1715:12/usr/bin/java->/etc/alternatives/java


[root@localhost~]#ls-lrt/etc/alternatives/java


lrwxrwxrwx.1rootroot46Aug1715:12/etc/alternatives/java->/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java


[root@localhost~]#


[root@localhost~]#cd/usr/lib/jvm


[root@localhostjvm]#ls


java-1.6.0-openjdk-1.6.0.0.x86_64java-1.7.0-openjdk-1.7.0.65.x86_64jrejre-1.6.0jre-1.6.0-openjdk.x86_64jre-1.7.0jre-1.7.0-openjdk.x86_64jre-openjdk


[root@localhostjvm]#





whereisjava也是如此,它本身不能定位到安装路径。可以通过上面例子去定位安装路径




3:rpm-qlpackagename
如果JDK是源码安装的话,那么这个方法也是行不通的。也就是说rpm–qlpackagename也是有一定局限性的。

[root@localhost~]#java-version

javaversion"1.7.0_65"

OpenJDKRuntimeEnvironment(rhel-2.5.1.2.el6_5-x86_64u65-b17)

OpenJDK64-BitServerVM(build24.65-b04,mixedmode)

[root@localhost~]#rpm-qa|grepjava

tzdata-java-2014g-1.el6.noarch

java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64

[root@localhost~]#rpm-qljava-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64|more

/etc/.java

/etc/.java/.systemPrefs

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jaas-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jaas-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jaas.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jce-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jce-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jce.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jdbc-stdext-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jdbc-stdext-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jdbc-stdext-3.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jdbc-stdext.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-cos-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-cos-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-cos.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-ldap-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-ldap-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-ldap.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-rmi-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-rmi-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi-rmi.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jndi.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jsse-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jsse-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/jsse.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/sasl-1.7.0.65.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/sasl-1.7.0.jar

/usr/lib/jvm-exports/java-1.7.0-openjdk-1.7.0.65.x86_64/sasl.jar

/usr/lib/jvm-exports/jre-1.7.0-openjdk.x86_64

/usr/lib/jvm-private/java-1.7.0-openjdk.x86_64

/usr/lib/jvm-private/java-1.7.0-openjdk.x86_64/jce

/usr/lib/jvm-private/java-1.7.0-openjdk.x86_64/jce/vanilla

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/ASSEMBLY_EXCEPTION

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/LICENSE

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/THIRD_PARTY_README

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/java

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/keytool

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/orbd

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/pack200

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/policytool

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/rmid

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/bin/rmiregistry

--More--






作者:潇湘隐者
出处:http://www.cnblogs.com/kerrycode/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: