ฉันต้องการอ่านทรัพยากรจากในขวดของฉันเช่น:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferredReader reader = new BufferedReader(new FileReader(file));
//Read the file
และใช้งานได้ดีเมื่อรันใน Eclipse แต่ถ้าฉันส่งออกไปยัง jar การรันจะมี IllegalArgumentException:
Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical
และฉันไม่รู้จริงๆว่าทำไม แต่ด้วยการทดสอบบางอย่างฉันพบว่าฉันเปลี่ยน
file = new File(getClass().getResource("/file.txt").toURI());
ถึง
file = new File(getClass().getResource("/folder/file.txt").toURI());
จากนั้นทำงานตรงกันข้าม (ใช้งานได้ใน jar แต่ไม่ใช่คราส)
ฉันใช้ Eclipse และโฟลเดอร์ที่มีไฟล์ของฉันอยู่ในโฟลเดอร์ class
getResourceAsStream
ยังคงเป็นวิธีการแก้ปัญหาที่ง่ายและพกพาได้มากกว่า