Phương thức getResourceAsStream trả về null bất cứ khi nào chạy jar thực thi trong thư mục kết thúc bằng dấu chấm than.Không thể mở tài nguyên trong các thư mục kết thúc bằng dấu chấm than (!)
Đối với ví dụ sau đây, tôi có một dự án Eclipse cấu trúc thư mục sau:
src\ (Source Folder)
main\ (Package)
Main.java
res\ (Source Folder)
images\
Logo.png
Tôi đọc logo.png như sau:
public static void main(String[] args) throws IOException {
try (InputStream is = Main.class.getClassLoader().getResourceAsStream("images/Logo.png")) {
Image image = ImageIO.read(is);
System.out.println(image);
}
}
Xem tập tin đính kèm trong 2 thử nghiệm các trường hợp. Đầu tiên, jar thực thi được bắt đầu từ thư mục "D: \ test123! @ #" Mà không có bất kỳ vấn đề gì. Thứ hai, các jar thực thi được bắt đầu từ thư mục "D: \ test123! @ # !!!", với các vấn đề.
Các thư mục có dấu chấm than không được hỗ trợ không? Mã có sai không?
Xin cảm ơn trước.
Có lý do nào, bạn có thể tạo/sử dụng các thư mục có tên thông thường không? – mtk
Bạn có chắc chắn rằng bạn đặt các bình bằng nhau trong cả hai thư mục? – Andremoniy
Người dùng có thể thực thi ứng dụng của tôi từ bất cứ đâu trên hệ thống tệp của họ. Thư mục có dấu chấm than được Windows hỗ trợ. – Velth