作者qazsd (珍惜當下)
看板java
標題[問題] 部署到server後找不到檔案
時間Mon Sep 4 16:19:53 2017
請問一下
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
→ ssccg: resources裡面的用Class.getResource,路徑是從resources目 09/04 16:36
→ ssccg: 錄下開始的絕對路徑或相對於該Class package的路徑 09/04 16:36
→ ssccg: 你的可用getClass().getResource("/certs/credential.p12") 09/04 16:38
→ ssccg: 你用的new File傳相對路徑,是相對於java的執行路徑 09/04 16:41
→ ssccg: 放在resources中的檔案會包在jar檔裡,不會直接在檔案系統 09/04 16:41
→ qazsd: File file = new File(classLoader.getResource("cert.p12" 09/04 17:08
→ qazsd: ).getFile()); 09/04 17:08
→ qazsd: String filePath = file.getAbsolutePath(); 09/04 17:09
→ qazsd: 上面那樣對嗎?在本機跑跟server跑都通用嗎? 09/04 17:10
→ ssccg: 對 09/04 18:31