本帖最后由 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); //显示获得的地址。 System.out.println ("Stitic method new Object 获得的地址:"+path);//正常获取 file = new File (path+"BOLOMI.properties"); System.out.println ("文件名是:"+file.getName ());//正常获取 //返回值是false boolean b = file.exists ();////////////////////////有BUG,linux判断错误,该方法返回值有问题。可能原因:如果文件夹权限不是777返回的都是false System.out.println("exists 返回值是:"+b); if (b){ //判断不通过 大神!!!!!快就火呀。。。。。。 |
|