本帖最后由 suxuanhua 于 2017-11-22 02:06 编辑
今天打算更新个人的JavaWeb小项目,项目在 win10 tomcat 中部署能正常运行。
但是打包成 上传到 腾讯云 UbuntuServer 16.04,解压,把项目根目录中的所有文件,放到 tomcat ROOT目录中,将 ROOT目录中原有的文件删除。
(说一下放ROOT的原因吧:刚用IDEA的时候没设置好,导致链接跳转都不包含项目名,懒得修改,就直接替换ROOT目录)
运行tomcat 之后,项目发生错误(如图),经过几个钟的排查之后,
发现 Java 的 exists() 在 linux 下 ,就算通过文件路径找到了文件,并获取了文件名,返回值还是false。win 则是正常的的true。
网上查了之后,看到百科这么一篇文章:https://baike.baidu.com/item/file_exists/357436?fr=aladdin
文章说,file_exists 需要检测的父级文件夹权限,不是 777 会返回false 。
虽然文章中的是php ,应该和 Java 的exists() 相同。
想问一下这种情况Java 要怎么解决,是试过将整个项目、tomcat都chmod 777 了都还是不行。
贴代码://通过这种方式,在static 方法内获得项目的classes 目录,让后通过Properties 加载 .properties 配置文件。
String path = new Object() {
public String getPath() {
//加"/"表示当前项目根目录,不加表示当前运行类的目录
return this.getClass().getResource(PropertiesfilePath).getPath();
}
}.getPath().substring(1);
<