Linux下在.bash_profile文件下配置JDK环境变量,生效后执行java -version命令后提示错误信息如下:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下在.bash_profile文件下配置JDK环境变量,生效后执行java -version命令后提示错误信息如下:相关的知识,希望对你有一定的参考价值。

libgcj-java-placeholder.sh

This script is a placeholder for the /usr/bin/java
master link required by jpackage.org conventions. libgcj's
rmiregistry, rmic and jar tools are now slave symlinks to these
masters, and are managed by the alternatives(8) system.

This change was necessary because the rmiregistry, rmic and jar tools
installed by previous versions of libgcj conflicted with symlinks
installed by jpackage.org JVM packages.

This script was designed to be overridden by the supported RHEL3 JRE
packages, java-1.4.2-bea and java-1.4.2-ibm. It is installed as an
alternative symlink as /usr/bin/java. It will override a third-party
(non-RHEL3) JRE's java command if the JRE's bin directory is listed
after /usr/bin in PATH. In that case, it is recommended that the
third-party JRE's bin directory be listed first in PATH instead.

gij (GNU libgcj) version 3.2.3 20030502 (Red Hat Linux 3.2.3-47)

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
小弟菜鸟,请高手大侠不吝赐教,可能是配置了多个JDK导致的,换了只配置1.5的
他把1.6的都输出来了。
请哪位大侠路过了帮忙指正下原因,并帮忙改正一下,小弟在这里谢谢了!

应该说明你安装什么版本的JDK。
安装在哪里,现在的配置是什么?

以正常使用的为例
1,下载JDK,解压
然后移动/usr/local/java
具体哪个位置,什么命名,自己定义
2.假如有Tomcat一样的如上类似的设定。

3,vi /etc/profile
在最后一行后加入下面的内容。
JAVA_HOME="/usr/local/java"
CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
CATALINA_HOME="/usr/local/tomcat"
PATH=".:$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:"
export JAVA_HOME CATALINA_HOME
4.source /etc/profile 即可生效。

当然在.bash_profile 也是一样的。只是生效在当前的用户下。追问

我用的这个工具:SecureCRT,JDK版本:jdk1.6.0_20,安装在自己的目录下,没有安装到/usr/local/java这个目录中去,直接在部署环境的目录下,其他用户部署环境的时候也是放到当前用户目录下,但是部署成功了。配置信息在文件.bash_profile中,内容如图。
谢谢!

追答

按照你的设定。应该是这样,如果电脑主机上有多个用户,设置不同的环境变量定位不同的JAVA环境,最终成为什么样的效果。那就没有测试。正常的是用户独立使用。

JAVA_HOME="/home2/wanlifeng/tencent/jdk1.6.0_20"
PATH=".:$PATH:$JAVA_HOME/bin:"
export JAVA_HOME

追问

是不是因为要用root的身份部署JDK才可以啊?不是root的其他用户就不行?

追答

这个没有尝试过,不过你可以将JDK所在文件和项目加上权限,chmod -R 755 foler

参考技术A 两次jdk安装在同一个地方JRE冲突了,应该只留一个jdk.
/usr/bin/java目录下删掉一个,并且查看配置文件修改JAVA——HOME。
以上错误有两个:冲突加没修改配置。所以还是以前的1.6
参考技术B 请linux 的环境变量是在
/etc/profile
这个文件里面的,你需要在这个文件里面加上jdk环境变量:
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
参考技术C 不建议在
.bash_profile
文件内配置jdk环境,建议配置到/etc/profile 下面
参考技术D 为毛要那么多JDK。追问

JDK,Java Development Kit就是Java开发工具,是进行Java开发和编译的

追答

我知道,但你一个就够了啊

追问

上面问题是不是说JDK配置多了?
那怎样去把其他当前用户下JDK的卸载呢?请给小弟指教,谢谢。
还有是不是配置JDK只有root身份才行啊?
小弟初学,希望大哥多多指教一下,不胜感谢!

linux 下/etc/profile/etc/bashrc~/.bash_profile~/.bashrc 文件的区别

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. 

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. 

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取. 
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系. 
~/.bash_profile 是交互式、login 方式进入 bash 运行的 
~/.bashrc 是交互式 non-login 方式进入 bash 运行的 
通常二者设置大致相同,所以通常前者会调用后者。 
bash的几个初始化文件 - [Ubuntu] 
(1)/etc/profile 
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。 
(2)/ect/bashrc 
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc 
它也是全局(公有)的 
bash执行时,不管是何种方式,都会读取此文件。 
(3)~/.profile 
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。 
另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。 
(4)~/.bash_login 
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。 
(5)~/.bash_profile 
Unbutu默认没有此文件,可新建。 
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。 
(6)~/.bashrc 
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。 
(7)~/.bash_logout 
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。 

下面是在本机的几个例子: 
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile 
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc 
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile 
4. 从其它用户su到该用户,则分两种情况: 
    (1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。 
    (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc 
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout 
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。 
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。 

linux中profile与bashrc的区别 
Ubuntu 的相关目录下 
/ect/ /root /home/myuser 
profile .profile .profile 
bash.bashrc .bashrc .bashrc 
profile.d 

Fedora的相关目录 
/ect/ /root /home/myuser 
profile      profile 
bashrc   .bashrc bashrc 
profile.d                     profile.d 

说明:myuser 是你添加创建的用户 
在网上找了半天也不能包括所有的,所以只能比较个大概。 


bashrc与profile的区别 
要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。 
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。 
bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。系统中存在许多bashrc和profile文件,下面逐一介绍: 
/etc/pro此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行. 
并从/etc/profile.d目录的配置文件中搜集shell的设置. 
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。有些linux版本中的/etc目录下已经没有了bashrc文件。 
~/. pro每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默认情况下,它设置一些环境变量,然后执行用户的.bashrc文件. 
~/.bashrc:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取. 
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系. 

某网友总结如下: 
/etc/profile,/etc/bashrc 是系统全局环境变量设定 
~/.profile,~/.bashrc用户家目录下的私有环境变量设定 
当登入系统时候获得一个shell进程时,其读取环境设定档有三步 
1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 
/etc/profile.d和/etc/inputrc 
2然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取 
~/.profile,这三个文档设定基本上是一样的,读取有优先关系 
3然后在根据用户帐号读取~/.bashrc 
至于~/.profile与~/.bashrc的不区别 
都具有个性化定制功能 
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次 
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次 

某网友总结如下:

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,
/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。

 转载加整理

以上是关于Linux下在.bash_profile文件下配置JDK环境变量,生效后执行java -version命令后提示错误信息如下:的主要内容,如果未能解决你的问题,请参考以下文章

linux 用户如何自动执行.bash_profile文件?

Linux下文件 ~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 和 /etc/profile 的区别 | 用户登录后加载配置文件的顺序

Linux下如何使环境变量文件生效

Linux的.bash_profile文件说明

linux环境变量配置文件

mac 配置.bash_profile不生效问题