Đối với những người bạn di chuyển từ Eclipse sang IntelliJ hoặc theo cách khác, đây là một mẹo khi làm việc với các tệp thuộc tính hoặc các tệp tài nguyên khác.
Thật khó chịu (tốn cả buổi tối của tôi để tìm hiểu) nhưng cả hai công việc của IDE khá khác nhau khi tìm kiếm các tệp tài nguyên / thích hợp khi bạn muốn chạy cục bộ từ IDE của mình hoặc trong quá trình gỡ lỗi. (Bao bì thành .jar cũng khá khác nhau, nhưng điều đó được ghi lại tốt hơn.)
Giả sử bạn có một giới thiệu đường dẫn tương đối như thế này trong mã của bạn:
new FileInputStream("xxxx.properties");
(điều này thật tiện lợi nếu bạn làm việc với các tệp .properties cụ thể mà bạn không muốn đóng gói cùng với JAR của mình)
INTELLIJ
(Tôi sử dụng 13.1, nhưng có thể hợp lệ cho nhiều phiên bản hơn)
Tệp xxxx.properties cần phải ở vị trí PHỤ HUYNH của ROOT dự án để được chọn trong thời gian chạy như thế này trong IntelliJ. (ROOT của dự án là nơi chứa thư mục / src)
ECLIPSE
Eclipse chỉ hạnh phúc khi tệp xxxx.properties nằm trong chính dự án ROOT.
Vì vậy, IntelliJ mong đợi tệp .properties sẽ cao hơn 1 cấp so với Eclipse khi nó được tham chiếu như thế này !!
Điều này cũng ảnh hưởng đến cách bạn phải thực thi mã của mình khi bạn có cùng dòng mã này (FileInputStream mới ("xxxx.properties");) trong tệp .jar đã xuất của bạn. Khi bạn muốn nhanh nhẹn và không muốn đóng gói tệp .properties với jar của mình, bạn sẽ phải thực thi jar như bên dưới để tham chiếu chính xác tệp .properties từ dòng lệnh:
INTELLIJ XUẤT KHẨU JAR
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
ECLIPSE XUẤT KHẨU JAR
java -jar some.jar
trong đó jar thực thi được xuất Eclipse sẽ chỉ mong đợi tệp .properties được tham chiếu ở cùng vị trí với nơi tệp .jar