Hallo,getResourceAsStream không thành công trong môi trường mới?
tôi có dòng mã sau đây:
InputStream passoloExportFileInputStream = getClass().getClassLoader().getResourceAsStream("/com/thinkplexx/lang/de/general.xml");
và tôi biết rằng jar với com/thinkplexx/lang/de/general.xml là trong classpath.
Nó hoạt động trong "môi trường trước", đó là xây dựng maven2.
Bây giờ, tôi đánh giá maven3 và nó không hoạt động! Tôi biết rằng nếu tôi thay đổi mã thành:
InputStream passoloExportFileInputStream = getClass().getClassLoader().getResourceAsStream("com/thinkplexx/lang/de/general.xml");
nó hoạt động rất lớn (tôi vừa xóa dấu gạch chéo đầu tiên khỏi đường dẫn tài nguyên).
Btw, tôi sử dụng Linux. Dấu gạch chéo đầu tiên trong đường dẫn thường có nghĩa là "từ thư mục gốc", vì vậy nếu logic này là âm thanh cho tải tài nguyên java là tốt, ví dụ đầu tiên không bao giờ nên làm việc !?
Câu hỏi: có vấn đề gì với mẫu mã đầu tiên, tức là với /com/ chứ không phải com/? Nó chỉ là mã xấu hay nó có ý nghĩa gì đó khác?
cảm ơn bạn!
Câu trả lời của Devons phù hợp với tôi. Ngoài ra, tôi tìm thấy trong http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/guide/lang/resources.html rằng: " Các phương pháp trong ClassLoader sử dụng Chuỗi đã cho là tên của tài nguyên mà không áp dụng bất kỳ phép biến đổi tuyệt đối/tương đối nào (xem các phương thức trong Lớp). Tên không được có "/" hàng đầu. " –