Tôi có một ứng dụng java đơn giản tải một tệp thuộc tính từ gói hiện tại.Tải tài nguyên từ bất kỳ đâu trong đường dẫn lớp
this.getClass().getResourceAsStream("props.properties");
Điều này làm việc tốt khi tệp thuộc tính tôi muốn nằm trong gói hiện tại. Tuy nhiên, tôi muốn đóng gói ứng dụng này như một JAR và định nghĩa và ghi đè bằng một tệp thuộc tính mới mà tôi sử dụng nó. Có cách nào để tải tài nguyên đầu tiên có tên "props.properties" có trên classpath không?
Tôi muốn nó được dễ dàng để ghi đè lên tập tin thuộc tính thông qua dòng lệnh:
java.exe -classpath props.properties;myJar.jar com.test.MyApp
Tôi không muốn phải giải nén JAR và sửa đổi tập tin thuộc tính để thay đổi một cái gì đó. Tôi cảm thấy như tôi là thiếu một cái gì đó rõ ràng ...
Âm thanh về quyền: Bạn muốn hỏi một ClassLoader là "ông chủ" của người đã tải lớp học của bạn, vì vậy nó có thể có quyền truy cập vào nhiều gói hơn. Một khả năng khác là thử 'ClassLoader.getSystemClassLoader()' - như tên của nó, đó là "ông chủ" của những người khác. –
không có phương thức tĩnh 'getResourceAsStream()' trong lớp 'ClassLoader'. –
và trình nạp lớp hệ thống sẽ có khả năng tải tài nguyên từ bên ngoài đường dẫn lớp của ứng dụng của bạn, tức là tìm trong thư mục bootstrap trong đường dẫn cài đặt JRE –