[英]Loading a file from dependency jar inside maven junit
我正在使用maven 2.1.0並且有一個包含多個模塊的項目。 示例模塊:
spr-common依賴於spr資源
spr-resources只包含文件,沒有類。
spr-common有一個junit,需要從spr-resources jar加載文件。
我用了:
String fileName = getClass().getResource("/jaskeyfile.3DES").getFile();
is = getClass().getClassLoader().getResourceAsStream(fileName);
is.read(data);
這在我在IntelliJ中運行測試時有效,但是當我進行mvn測試時,當我嘗試對其執行read()時,它會因NullPointerException而失敗。
為什么會這樣? 它應該從依賴中讀取文件就好了。
另外,spr-common中的pom.xml依賴於spr-resources(嘗試使用范圍測試,沒有使用它)
編輯:我也嘗試過
getClass().getClassLoader().getResourceAsStream("/jaskeyfile.3DES");
沒有運氣。
EDIT2:給定的文件存在於生成的jar中,所以我想它應該是可訪問的。
仔細檢查一切
這是一個可以解決的列表:
jaskeyfile.3DES
位於spr-resources模塊中的src/main/resources
中 如果以上所有都是真的那么你的getClass().getResourceAsStream("/jaskeyfile.3DES")
調用應該工作。 我在我的項目中一直使用這種結構,所以你不要在這里要求月亮或任何東西。
我認為問題可能出在領先的斜線上。 我認為這兩個都應該有效:
getClass().getResourceAsStream("/jaskeyfile.3DES")
getClass().getClassLoader().getResourceAsStream("jaskeyfile.3DES")
Class.getResourceAsStream()
接受相對於類的包目錄的路徑,因此它接受前導斜杠。
ClassLoader.getResourceAsStream()
已經采用絕對路徑,因此它不接受前導斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.