2008-11-06 13 views
50

Tôi biết tệp cần phải là nơi getClass(). getResource (tên tệp) có thể tìm thấy nó, nhưng tôi không biết đó là đâu.Java trong Eclipse: Tôi đặt các tệp trên hệ thống tệp mà tôi muốn tải bằng cách sử dụng getResource ở đâu? (ví dụ: hình ảnh cho ImageIcon)

Tôi quan tâm cả về vị trí đặt các tệp trên chính hệ thống tệp và cách sử dụng chức năng của Eclipse để thiết lập tài nguyên.

Trả lời

62

Đối với Eclipse, thông thường tất cả những gì bạn cần làm là thiết lập một thư mục ở đâu đó trong thư mục mã nguồn của bạn. Ví dụ: nếu thư mục chứa nguồn của bạn là /src thì bạn có thể tạo thư mục /src/resources để đặt hình ảnh/tệp của mình. Sau đó, trong lớp bạn thực hiện getResource("/resources/image.png") để truy xuất.

Bạn cũng có thể đặt hình ảnh/tệp trong cùng một thư mục/gói khi lớp cố gắng truy cập nó nếu bạn muốn (ví dụ: đặt hình ảnh.png trong gói com.mycompany với lớp com.mycompany.Foo cần truy cập nó và gọi getResource("image.png")), nhưng tôi thấy rằng việc giữ các tài nguyên như hình ảnh và các tệp khác trong thư mục đặc biệt của riêng chúng nằm ngoài thư mục lớp dễ dàng hơn - chúng dễ quản lý hơn theo cách đó.

Trong Eclipse, bất cứ khi nào bạn xây dựng, các tệp trong thư mục tài nguyên này sẽ được sao chép vào thư mục xây dựng của bạn cùng với các lớp được biên dịch của bạn. Điều quan trọng cần lưu ý là nếu bạn đã bật "Xây dựng Tự động" trong Eclipse (như hầu hết mọi người), bất kỳ tài nguyên nào trong thư mục này được thay đổi bên ngoài Eclipse (tức là bạn chỉnh sửa hình ảnh bằng công cụ chỉnh sửa hình ảnh) IDE có thể không phải luôn luôn phát hiện sự thay đổi này. Thông thường làm một làm mới trên thư mục dự án sẽ đảm bảo rằng các tập tin được cập nhật trong xây dựng trong những tình huống này.

+6

Tôi sẽ thêm rằng trong trường hợp Eclipse không xử lý đúng thư mục tài nguyên bạn đặt vào src /, bạn cần phải "bao gồm" nó nhưng không sử dụng nó làm "thư mục nguồn". Bạn có thể làm điều này bằng cách đưa lên trình đơn ngữ cảnh cho thư mục (nhấp chuột phải) và vào Build Path -> Remove from Build Path, Include – charstar

7

Bạn có thể đặt chúng trong thư mục src cùng với lớp học hoặc bạn có thể tạo thư mục nguồn mới cho mục đích (thường được gọi là tài nguyên), mặc dù bạn sẽ định vị chúng giống hệt mã.

Sau đó, bạn nhận được chúng bằng cách sử dụng getResource("/com/x/y/foo.png").