[問題] 部署到server後找不到檔案

看板java作者 (珍惜當下)時間7年前 (2017/09/04 16:19), 編輯推噓0(0010)
留言10則, 2人參與, 最新討論串1/1
請問一下 Maven專案資料夾結構如下: Project ├src/main/java │ └ com.abc.xyz │ └Auth.java └src/main/resources └certs └credential.p12 Auth.java裡有段程式碼用來驗證: ===================================================================== GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes(Collections.singleton( CalendarScopes.CALENDAR_READONLY)) .setServiceAccountPrivateKeyFromP12File(new File("credential.p12")) .setServiceAccountUser(SERVICE_ACCOUNT_USER) .build(); ===================================================================== 該專案檔的jar部署到Server上後 會出現找不到credential檔案的錯誤訊息 想請問credential檔案應該放在專案或server哪裡才能被找到? 又該怎麼指定路徑呢? -- 你的行動或許沒有意義,但你還是非做不可。 這不是為了改變世界,而是為了讓你成為不會被世界改變的那個人. – 甘地(Mahatma Gandhi) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.165.65 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1504513198.A.C66.html

09/04 16:36, , 1F
resources裡面的用Class.getResource,路徑是從resources目
09/04 16:36, 1F

09/04 16:36, , 2F
錄下開始的絕對路徑或相對於該Class package的路徑
09/04 16:36, 2F

09/04 16:38, , 3F
你的可用getClass().getResource("/certs/credential.p12")
09/04 16:38, 3F

09/04 16:41, , 4F
你用的new File傳相對路徑,是相對於java的執行路徑
09/04 16:41, 4F

09/04 16:41, , 5F
放在resources中的檔案會包在jar檔裡,不會直接在檔案系統
09/04 16:41, 5F

09/04 17:08, , 6F
File file = new File(classLoader.getResource("cert.p12"
09/04 17:08, 6F

09/04 17:08, , 7F
).getFile());
09/04 17:08, 7F

09/04 17:09, , 8F
String filePath = file.getAbsolutePath();
09/04 17:09, 8F

09/04 17:10, , 9F
上面那樣對嗎?在本機跑跟server跑都通用嗎?
09/04 17:10, 9F

09/04 18:31, , 10F
09/04 18:31, 10F
文章代碼(AID): #1PhGoknc (java)
文章代碼(AID): #1PhGoknc (java)