java.io.FileNotFoundException: /usr/local/tomcat/conf/context.xml (Permission denied)

版权声明:整理不易,转载请注明出处。 https://blog.csdn.net/linmengmeng_1314/article/details/86288018

因为使用的不是root用户登录的,在关闭tomcat时出现这个错误,提示权限不足。切换到root用户再次操作就好了。

切换到root用户:

使用命令:su root
然后提示输入密码,这时密码是不显示的,只要正确输入回车登录即可。

前面的用户显示root,则证明切换root用户身份成功。

网上还有直接将修改tomcat的context.xml 文件权限的方式,感觉这样不太好,一些敏感的权限还是留给root用户比较好。

还有一个问题是,在centos的tomcat下,更换了新的war包之后,需要删除原来的项目文件夹,不然tomcat是不会加载新的war包的。

我们知道在Windows上,在tomcat在运行的状态下,直接删除项目的war包,将会连带项目的文件夹也会直接删除。在tomcat重启的时候,会自动加载项目下的war包,这样即使我们没有删除原来的项目文件夹,也是可以正常更新项目的。

但是在centos里面好像就不适用了,刚开始我只是更新了新的war包,然后直接重启了tomcat,但是我发现项目文件夹的时间不是最新的,然后我进去查看class文件夹,仍然不是最新的。可见tomcat并没有重新加载新的war包。如下图:
在这里插入图片描述
因此在部署新的项目的时候,最好是先关闭tomcat,然后删除war包和项目解压的文件夹。在替换新的war包,重启之后,可以在tomcat的安装 目录下使用:tailf logs/catalina.out实时查看tomcat的运行状态,也就是tomcat的运行日志,类似我们的IDE里面的console窗口的内容。

首先,war包是不能在tomcat运行时删除的,否则会删除对应的自动解压的工程,我们可以先停止tomcat后删除war包;其次呢,当我们重新部署项目的时候,如果webapps中已经有与war文件相同名字的文件夹,就不会重新部署。这里的重新部署的意思就是,不会再解压之前的war文件,也不会覆盖对应文件夹也就是工程下的可能已经被我们修改过的文件。

  1. 为什么我们不能在tomcat正在运行的情况下删除war包呢?
    因为,tomcat在运行期, 会实时监控webapps目录下的war包文件,如果有新增的war,就去解压它; 如果有删除war的操作,就连同项目一起删除 ,也就是删除了war包对应的文件夹。如果我们需要删除war包,就需要先停止tomcat,再删除war包,这样就不会有什么影响。
  2. tomcat中的webapps中的war包和同名的已解压项目文件夹是怎么加载的?
    在tomcat启动的时候,回去webapps文件夹下查看所有的war包,并查看是否有同样名称的文件夹或者说工程,如果有,tomcat就不会再解压该war包,也不会去覆盖该文件夹下的文件。只有当我们删除war包对应的同名文件夹的时候,启动tomcat的时候才会再次进行解压war包的操作。
    参考:https://blog.csdn.net/huangyuehong914/article/details/81456130

猜你喜欢

转载自blog.csdn.net/linmengmeng_1314/article/details/86288018