【问题标题】:tomcat7 wont run on startuptomcat7不会在启动时运行
【发布时间】:2012-10-12 16:14:42
【问题描述】:

尝试了所有方法,但它不起作用,我在 EC2 实例(亚马逊 AWS)上运行 tomcat7。我可以通过启动startup.sh手动启动tomcat7,但不能在启动时自动启动。我在 logs/catalina.out 中收到的错误消息如下:

/etc/apache-tomcat-7.0.32/bin/catalina.sh: 1: eval: /etc/jdk1.7.0_07/bin/java: not found

我的环境变量也设置正确:

echo $JAVA_HOME -> /etc/jdk1.7.0_07/bin/java
echo $PATH -> /usr/local/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/sbin:/bin:/usr/games:/etc/jdk1.7.0_07/bin

我也可以在 shell 中输入“java -version”来获得正确的输出,但是“/etc/jdk1.7.0_07/bin/java -version”不起作用并且只返回“没有这样的文件或目录”。

我现在真的不知道该怎么办,感觉我什么都试过了,希望有人能帮助我! 此外,该实例正在运行 Ubuntu server 12.04

【问题讨论】:

  • 在你的 /etc/bash.bashrc 中设置 JAVA_HOME 并且你的 java home 应该是 $JAVA_HOME -> /etc/jdk1.7.0_07 直到 bin
  • 在你的 shell 中尝试which java,看看它正在使用哪个java 二进制文件。用于启动 Tomcat 的脚本也可能使用与 /etc/jdk.. 不同的 java。
  • 尝试使用Elastic Beanstalk,它将自动为您完成所有这些设置工作

标签: java tomcat ubuntu amazon-ec2 amazon-web-services


【解决方案1】:

sudo su vi /etc/bash.bashrc 并复制以下内容

JAVA_HOME=/etc/jdk1.7.0_07 //you have to only specify path until java dir not bin
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

【讨论】:

  • 仍然得到同样的错误,但是“which java”返回“/usr/bin/java”,我应该改变这个吗?如果可以,我该怎么做?
  • @Marcus 您的机器上有另一个 java 您是否正确保存了文件。重启后再试。
  • 我确实重新启动了,现在甚至无法手动启动 tomcat7,手动运行 startup.sh 时出现以下错误:“./catalina.sh 1: eval: /etc/jdk1.7.0_07 /bin/java: 未找到”(在 catalina.out 日志文件中)
  • @Marcus 这意味着你的机器上没有这样的 jdk。你可以试试locate jdk找到jdk位置在哪里
  • 谢谢,通过“locate jdk”我找到了我不知道的机器上预装的jdk。我将 JAVA_HOME 更改为“/usr/lib/jvm/java-7-openjdk-amd64”,现在它可以工作了!
【解决方案2】:

我并不特别了解 EC2 上的 ubuntu+tomcat7 的细节。所以我的回答可能有点漏掉了。它是从通用 ubuntu 的角度给出的。

如果你在 ubuntu 上使用 apt-get 来管理 tomcat 和 java,可能事情会更容易管理。在这种情况下,tomcat 将在启动时自动启动。以下命令在 ubuntu 12.10 上进行了测试,但也适用于某些早期版本。

要安装 Java,您需要以下内容:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

如果第一个命令失败,请使用以下命令:

sudo apt-get install software-properties-common

然后使用以下命令安装tomcat7:

sudo apt-get install tomcat7

之后,您需要告诉 tomcat 使用已安装的 java 7。为此,可以手动修改 /etc/default/tomcat7 文件,也可以使用如下命令:

cat /etc/default/tomcat7 | sed 's/#JAVA_HOME=\/usr\/lib\/jvm\/openjdk-6-jdk/JAVA_HOME=\/usr\/lib\/jvm\/java-7-oracle/' >/tmp/tomcat7-updated
sudo cp /tmp/tomcat7-updated /etc/default/tomcat7

之后,tomcat 应该在启动时加载。您只需要调整端口和其他配置信息。请注意,这个 tomcat 使用 /var/lib/tomcat7/webapps/ 来存储 Web 应用程序。您也可以使用如下命令手动启动或停止 tomcat:

sudo /etc/init.d/tomcat7 start

【讨论】:

    【解决方案3】:

    为了自动启动tomcat,它应该只在启动时启动。

    为此,您需要编写一个启动 tomcat 的脚本并将此文件放在 etc/init.d 中,或者您可以将其用于不同的运行级别。

    【讨论】:

      【解决方案4】:

      对我的提示是修改 shell 脚本文件(设置 JAVA_HOME 变量),这解决了问题。

      tomcat脚本文件一般在/etc/init.d/目录下

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 2015-05-16
        • 1970-01-01
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        • 2010-12-06
        相关资源
        最近更新 更多