ฉันใช้ maven 2.1.0 และมีโปรเจ็กต์ที่มีหลายโมดูล โมดูลตัวอย่าง:
- ทรัพยากรสปริง
- Spr-ทั่วไป
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 มันจะล้มเหลวด้วย NullPointerException เมื่อฉันพยายามจะ read() กับมัน
ทำไมสิ่งนี้ถึงเกิดขึ้น? ควรอ่านไฟล์จากการพึ่งพาได้ดี
นอกจากนี้ pom.xml ใน spr-common ยังขึ้นอยู่กับทรัพยากร spr (ลองทั้งแบบทดสอบขอบเขตและไม่ใช้)
แก้ไข: ฉันก็ลองด้วย
getClass().getClassLoader().getResourceAsStream("/jaskeyfile.3DES");
ไม่มีโชค
แก้ไข 2: ไฟล์ที่กำหนดมีอยู่ใน jar ที่เป็นผลลัพธ์ ดังนั้นฉันเดาว่ามันควรจะสามารถเข้าถึงได้
InputStream is = getClass().getResourceAsStream("/java/pkg/with/your/file/filename.txt");
แล้วหรือยัง? การพึ่งพาspr-resources
ถูกกำหนดไว้ในไฟล์pom.xml
จริงๆ และไม่ใช่แค่ใน IDE ของคุณเท่านั้น สตรีมที่ส่งคืนคือnull
หากไม่พบทรัพยากรใน CLASSPATH แก้ไข: ไฟล์อยู่ในspr-resources
ในไดเรกทอรีsrc/main/resources/java/pkg/with/your/file/filename.txt
จริงๆ หรือไม่ - person Jiri Patera   schedule 07.12.2010