本帖最后由 suxuanhua 于 2017-11-22 02:06 編輯 今天打算更新個人的JavaWeb小項目,,項目在 win10 tomcat 中部署能正常運行,。 但是打包成 上傳到 騰訊云 UbuntuServer 16.04,,解壓,,把項目根目錄中的所有文件,放到 tomcat ROOT目錄中,,將 ROOT目錄中原有的文件刪除,。 (說一下放ROOT的原因吧:剛用IDEA的時候沒設置好,導致鏈接跳轉都不包含項目名,,懶得修改,,就直接替換ROOT目錄) 運行tomcat 之后,項目發(fā)生錯誤(如圖),,經過幾個鐘的排查之后,, 發(fā)現 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){ //判斷不通過 大神?。,。。,?!快就火呀。,。,。。,。,。 |
|