2012-01-22 30 views
7

Khi tôi xuất mã của mình dưới dạng JAR chạy được từ nhật thực tất cả các tệp mà tôi đã đặt để lấy như hình ảnh nút và các tệp khác bị thiếu mặc dù chúng thực sự nằm trong JAR . Tôi đã thêm getClass().getResource ở phía trước các tệp nhưng sau đó khi tôi cố gắng chạy JAR không có gì xảy ra, bất kỳ đề xuất nào?Các JAR Runnable thiếu Ảnh/Tệp (Tài nguyên)

+2

Vui lòng chỉ cho chúng tôi một số mã thực tế, cũng như danh sách nội dung tệp JAR của bạn hiển thị đường dẫn. – ziesemer

Trả lời

21

Có vẻ như bạn không đặt nội dung của mình theo đúng nghĩa. Để làm cho nó hoạt động, hãy làm theo các bước sau:

  1. Bấm chuột phải vào Project trong Project Explorer Tree.
  2. Đi đến New -> Source Folder và sau đó cung cấp bất kỳ Name nào tới Source Folder.
  3. Bây giờ, hãy thêm công cụ của bạn theo cách thủ công vào số này Source Folder do bạn tạo, như nếu bạn muốn thêm hình ảnh sau đó tạo New Folder, bằng cách truy cập thủ công Source Folder này qua File System.
  4. Đặt tên cho số này New Folderimages và sao chép hình ảnh của bạn vào số Folder này.
  5. Bây giờ quay lại IDE Eclipse của bạn và RefreshProject từ Project Explorer, bằng cách nhấp chuột phải vào dự án của bạn, tại đây bạn có thể xem nội dung được thêm ngay bây giờ sau khi làm mới.

Bây giờ để truy cập, hãy nói mọi hình ảnh, bạn sẽ sử dụng.

getClass().getResource("/images/yourImageName.extension"); 

sẽ trả về một đối tượng URL. Hãy nhớ rằng first forward slash, trong trường hợp này, vì bất kỳ điều gì bên trong Thư mục Nguồn của bạn đều được truy cập với sự trợ giúp của điều này, theo các thuật ngữ đơn giản hơn. Bây giờ khi bạn sẽ chạy dự án của bạn, nội dung của thư mục nguồn này sẽ được tự động thêm vào thư mục bin và khi bạn sẽ tạo ra một Jar Runnable, sau đó các công cụ bên trong thư mục nguồn của bạn có thể được truy cập như nó được.

1

Đường dẫn cần phải phù hợp với tài nguyên.

Đối với "foo.gif" ở gốc của bình, bạn phải tham chiếu đến nó bằng cách sử dụng "/foo.gif".

Nếu chương trình hoạt động chính xác sau khi hoàn toàn sạch sẽ và xây dựng lại, nhưng không thành công như bình, bạn rất có thể không có các tệp được bao gồm trong bình.

0

Cố gắng đặt các thư mục trong bình giống như cách bạn đã nhận chúng trong chương trình. Đặt trong cùng một tài nguyên trong cùng một địa điểm mà bạn có chúng trong dự án. Các jar sẽ tham chiếu đến họ theo cách tương tự như trong trình biên dịch của bạn đã làm.

0

Bạn cần lấy hình ảnh bằng cách sử dụng luồng như thế này - this.class.getClassLoader(). GetResourceAsStream ("test.jpg") và đảm bảo hình ảnh có trong bình bạn đang tham chiếu.

0

nIcE cOw cho biết, bạn chỉ cần tạo Thư mục nguồn trong cây Project Explorer. Tất cả các tệp bên trong thư mục đó sẽ nằm trong thư mục gốc của dự án.

Để tham khảo đối với họ, bạn phải ghi rõ họ tên dự án của bạn giảm các tên file như thế:

getClass().getResource("ProjectName/image.extension");

Tôi hy vọng điều này sẽ giúp!

Các vấn đề liên quan