2009-04-20 40 views
6

Tôi đang cố gắng tải tệp thuộc tính mà không sử dụng đường dẫn thực của tệp. Tôi đã thực hiện điều đó trên một số ứng dụng đơn giản khác bằng cách sử dụng:classloader.getSystemResourceAsStream trả về null

InputStream inputStream = ClassLoader.getSystemResourceAsStream(PROPERTIES_FILE); 
props.load(inputStream); 

Nhưng lần này nó không hoạt động. InputStream là null vì lý do nào đó. PROPERTIES_FILE là hằng số được định nghĩa là "app.properties". Tôi đã cố gắng để loại bỏ phần mở rộng .properties và có kết quả tương tự.

Bất kỳ ý tưởng nào?

Cảm ơn.

+2

Vị trí app.properties nằm ở đâu? –

Trả lời

13

Các PROPERTIES_FILE liên tục nên bao gồm các gói cũng như các thuộc tính tập tin (ví dụ: "com/some/thư viện/file.properties".

final static String PROPS_FILE = "/com/some/library/file.props"; 
        //The preceding "/" is dependendant on wheterh 
        //you are going to be giving a relative or absolute location 
    InputStream is = YourCurrentClass.class.getResourceAsStream(PROPS_FILE); 
+0

Tôi đã thêm thông tin gói như bạn đã đề cập nhưng vẫn gặp lỗi tương tự. m thực hiện cuộc gọi đó là tĩnh nếu có ích ... – Lancelot

+0

Trên thực tế đã có một lỗi đánh máy khi tôi thêm tên gói. Giải pháp đó hoạt động rất tốt. Cảm ơn! :) – Lancelot

+1

Bạn có thể muốn gọi getResourceAsStream trên bộ nạp lớp của lớp học của bạn. Hoặc có thể là trên lớp của bạn. –

0

Khi getSystemResourceAsStream lợi nhuận null, nó có nghĩa là tài nguyên không được tìm thấy Đảm bảo tài nguyên được yêu cầu thực sự nằm trên đường dẫn lớp tại vị trí được chỉ định