0
$ sudo ./bin/catalina.sh run
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

/etc/profile 中配置好了所有的环境变量, 为什么还会报错误?

# java environment
export JAVA_HOME="/usr/local/java/jdk1.8.0_144"
export JRE_HOME="$JAVA_HOME/jre"
export CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib"
export PATH="$JAVA_HOME/bin:$JRE_HOME/bin:$PATH"

搜索解决办法时只说去Tomcat的运行文件catalina.sh中添加JAVA_HOME和JRE_HOME两个变量即可运行, 这样切换版本的时候会比较繁琐.

上述错误只在使用root权限启动时发生的? 是否和用户有关?

$ sudo ./catalina.sh run
./catalina.sh: line 108: uname: command not found
./catalina.sh: line 129: dirname: command not found
Cannot find //bin/setclasspath.sh
This file is needed to run this program

正常启动后又报这个错误?
键入查看uname和dirname命令都有.

... Tomcat 是怎么了?

3个回答

0

配置完有没有执行source命令

0

把引号去掉
使用 echo $PATH 或者 env 查看变量是否配置成功,
没有的话,执行下source profile,或者命令行执行export

0

你被国内资料误导了,写到/etc/profile本来就不会被加载,想看详细解释就去google吧,这里不浪费篇幅了。

只说解决方案,按照tomcat官方文档的正确做法,在tomcat的bin/目录下创建一个setenv.sh文件,把你的那几个环境变量写入这个文件即可,可以不加export。

另外纠正一个错误,CLASSPATH这个环境变量早在JDK 1.5以后版本就不再需要了,而且官方文档也是不建议用户自己去设置这个环境变量,JVM能自己找到那几个jar,不需要用户操心。

还有一点,JAVA_HOMEJRE_HOME不用都赋值,tomcat会优先使用JRE_HOME,导致JAVA_HOME不生效。具体解释可以打开看catalina.sh文件中开头的解释部分。PATH那一行也可以不要,没必要。

撰写答案