• 添加tomcat开机启动服务时报错:Neither the JAVA_HOME nor the JRE_HOME enviromment variable is defined


    首先,参考的 https://blog.csdn.net/wabil/article/details/78818249 的方式添加 tomcat 开机启动,这种方式不需要添加 setenv.sh 文件,轻量级,非常方便,具体方式如下:

    1. 创建一个服务文件

    vim /lib/systemd/system/tomcat.service

    复制如下内容,修改后保存:
    [Unit]
    Description=tomcat
    After=network.target

    [Service]
    Type=oneshot
    ExecStart=/home/apache-tomcat-7.0.70/bin/startup.sh // 自已的tomcat目录
    ExecStop=/home/apache-tomcat-7.0.70/bin/shutdown.sh // 自已的tomcat目录
    ExecReload=/bin/kill -s HUP $MAINPID
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target

    2. 启动服务

    systemctl start tomcat.service

    执行这步的时候,始终报启动失败,执行下面步骤查看失败原因。

    3. 查看服务状态

    systemctl status tomcat.service

     没理由 JAVA_HOME 和 JRE_HOME 不存在啊,明明是存在的,检查一下发现确实是存在的:

    解决方法:

    方法1. 在 tomcat/bin/setclasspath.sh 中添加 JAVA_HOME 和 JRE_HOME 的指向(试了一下,不知道什么原因没搞成功)

    18 # -----------------------------------------------------------------------------
    19 #  Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
    20 #  are valid and consistent with the selected start-up options and set up the
    21 #  endorsed directory.
    22 # -----------------------------------------------------------------------------
    23 #
    24 # JAVA_HOME=/usr/java/jdk1.8.0_171
    25 # JRE_HOME=/usr/java/jdk1.8.0_171/jre

     方法2. 在 tomcat.service 中添加 JAVA_HOME 和 JRE_HOME 的指向(推荐)

    Environment='JAVA_HOME=/usr/java/jdk1.8.0_171'
    Environment='JRE_HOME=/usr/java/jdk1.8.0_171/jre'

    此时再次执行服务启动命令 systemctl start tomcat.service 成功,服务运行状态如下:

     附完整的 tomcat.service 文件

    [Unit]
    Description=Tomcat
    After=network.target
    
    [Service]
    Type=forking
    Environment='JAVA_HOME=/usr/java/jdk1.8.0_171'
    Environment='JRE_HOME=/usr/java/jdk1.8.0_171/jre'
    ExecStart=/opt/my/tomcat/bin/startup.sh
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/opt/my/tomcat/shutdown.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target

     4. 设置为开机启动

    systemctl enable tomcat.service
  • 相关阅读:
    [nodejs]npm国内npm安装nodejs modules终极解决方案
    [nodejs]解决mysql和连接池(pool)自动断开问题
    [nodejs]国内npm安装nodejs modules失败的几个解决方案
    [less]用webstorm自动编译less产出css和sourcemap
    [javascript] Promise API
    [javascript]巧用sourcemap快速定位javascript中的问题
    Gruntjs提高生产力(四)
    Gruntjs提高生产力(三)
    Gruntjs提高生产力(二)
    Gruntjs提高生产力(一)
  • 原文地址:https://www.cnblogs.com/xsbx/p/10173170.html
Copyright © 2020-2023  润新知