Tôi đang tải một tệp văn bản từ trong một gói trong JAR đã biên dịch của dự án Java của tôi. Cấu trúc thư mục có liên quan như sau:
/src/initialization/Lifepaths.txt
Mã của tôi tải một tập tin bằng cách gọi Class::getResourceAsStream
để trả về a InputStream
.
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
Bản in ra sẽ luôn luôn in null
, bất kể tôi sử dụng cái gì. Tôi không chắc tại sao những thứ trên không hoạt động, vì vậy tôi cũng đã thử:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
Cả hai công việc này. Tôi đã đọc rất nhiều câu hỏi cho đến nay về chủ đề này, nhưng không có câu hỏi nào hữu ích - thông thường, họ chỉ nói để tải các tệp bằng đường dẫn gốc, điều mà tôi đã làm. Điều đó, hoặc chỉ tải tệp từ thư mục hiện tại (chỉ tải filename
), mà tôi cũng đã thử. Tệp đang được biên dịch vào JAR ở vị trí thích hợp với tên thích hợp.
Tôi giải quyết điều này như thế nào?
Lifepaths.class
. Điều đó đang được nói, tại sao nó getClassLoader()
cho phép nó hoạt động? (Ngoài ra, vui lòng gửi câu trả lời!)
Lifepaths.getClass()
? Không có phương thức tĩnh nào được định nghĩa trong Object ...
getResource(String)
. BTW - Tôi luôn gặp vấn đề khi một trong hai người đó làm việc trong một static
bối cảnh. Vấn đề cơ bản là trình nạp lớp thu được là cái dành cho các lớp J2SE. Bạn cần có quyền truy cập vào trình nạp lớp ngữ cảnh dành cho chính ứng dụng.