Neither the JAVA_HOME nor the JRE_HOME environment variable is defined解决 linux 下 启动tomcat 报: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 先看Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat。只要在setclasspath.bat的开头声明环境变量,打开tomcat的bin目录下面的setclasspath.sh,添加红色部分,路径自己修改。windows 下用set。 #!/bin/sh # ----------------------------------------------------- # Set CLASSPATH and Java options # # $Id: setclasspath.sh 467182 2006-10-23 23:47:06Z markt $ # ------------------------------------------------------ export JAVA_HOME=/usr/lib/jvm/java-7-sun ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(红色部分) export JRE_HOME=/usr/lib/jvm/java-7-sun/jre ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(红色部分) # First clear out the user classpath CLASSPATH= # Make sure prerequisite environment variables are set if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then # Bugzilla 37284 if $darwin && [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home" ]; then export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home" else echo "Neither the JAVA_HOME nor the JRE_HOME environment variable is defined" echo "At least one of these environment variable is needed to run this program" exit 1 fi fi if [ -z "$JAVA_HOME" -a "$1" = "debug" ]; then echo "JAVA_HOME should point to a JDK in order to run in debug mode." exit 1 fi if [ -z "$JRE_HOME" ]; then JRE_HOME="$JAVA_HOME" fi # If we're running under jdb, we need a full jdk. if [ "$1" = "debug" -o "$1" = "javac" ] ; then if [ "$os400" = "true" ]; then if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/javac ]; then echo "The JAVA_HOME environment variable is not defined correctly" echo "This environment variable is needed to run this program" echo "NB: JAVA_HOME should point to a JDK not a JRE" exit 1 fi else if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/jdb -o ! -x "$JAVA_HOME"/bin/javac ]; then echo "The JAVA_HOME environment variable is not defined correctly" echo "This environment variable is needed to run this program" echo "NB: JAVA_HOME should point to a JDK not a JRE" exit 1 fi fi fi
2.安装JDK
准备JDK安装包
我下载安装的JDK是:jdk-6u29-linux-x64-rpm.bin
2.1上传或者拷贝到Linux系统中
我拷贝到了/tmp目录下,如下图所示
jdk包
2.2.给安装包jdk-6u29-linux-x64-rpm.bin加执行权限
#cd /tmp
#chmod +x jdk-6u29-linux-x64-rpm.bin
2.3.生成rpm文件(在/tmp目录下执行)
#./jdk-6u29-linux-x64-rpm.bin
现在的jdk安装包,执行到这里就完成安装了,如下图所示
安装
出现以上信息,你可以到目录下/usr/java下能找的安装好的jdk目录,我的如下图所示:
jdk目录
接下来可以跳过6~7步骤,直接进行8步的设置环境变量了。
2.4.给rpm文件jdk-6u29-linux-x64.rpm加执行权限(/tmp下执行)
#chmod +x jdk-6u29-linux-x64.rpm
2.5.执行安装 (/tmp下执行)
#rpm -ivh jdk-6u29-linux-x64.rpm
根据提示信息,接受协议,执行一步步的安装即可。
2.6.设置环境变量(编辑文件/etc/profile):
#vi /etc/profile
在文件最后加上如下信息:
设置环境变量
JAVA_HOME=你的jdk安装的实际路径,我的安装在/usr/java目录下了。这个根据你的实际安装决定。
"环境变量设置"
vim /etc/profile #设置 jdk 的环境变量 export JAVA_HOME=/usr/local/jdk export CLASSPATH=:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin
2.7检验安装配置是否成功:
#java -version
成功校验
出现以上信息,说明安装已经成功!
3、Linux下的JDK卸载
3.1.卸载系统自带JDK版本
#rpm -qa|grep gcj
查看到如下信息,如图所示:
浏览默认JDK
进行卸载默认安装JDK:
#rpm -e --nodeps java-1.4.2-gcj-compat-devel-1.4.2.0-40jpp.115
3.2.卸载安装的JDK
#rpm -qa|grep jdk
查看信息如下,如图所示:
自安装JDK查看
进行自安装的JDK卸载:
#rpm -e --nodeps jdk-1.6.0_29-fcs