Tôi đã phá vỡ vấn đề này trong một thời gian ngắn và không thể tìm thấy giải pháp cho vấn đề này:Tệp và bundleresource: // URL
Tôi có ứng dụng RCP Eclipse sử dụng thư viện tùy chỉnh được đóng gói làm jar. Từ plugin, tôi đang gọi một phương thức trong jar. Trong phương pháp này, tôi đang "nhận" tài nguyên bằng cách sử dụng this.class.getResource(relPath)
, trong khi relPath
là đường dẫn tương đối được mã hóa cứng vào tệp tôi cần. Điều này trả về cho tôi một số URL
mà tôi có thể sử dụng để xây dựng một số File
.
Bây giờ, điều này hoạt động hoàn hảo nếu tôi không gọi phương thức này từ plugin, nhưng từ một chương trình Java đơn giản. Sự khác biệt: Trình tải lớp của Eclipse RCP trả về một giao thức URL
bundleresource://
không được hỗ trợ bởi File
, trong khi khi chạy một chương trình Java đơn giản, trả lại số file://
-URL là hoàn toàn phù hợp để xây dựng File
.
Tôi biết lớp FileLocator
của Eclipse SDK (giải quyết bundleresource-URL tới tệp-URL), nhưng tôi không thể sử dụng nó trong thư viện vì tôi không muốn kết nối nó với nền tảng RCP Eclipse - nó cũng có thể sử dụng lib này từ các nguồn không phải của Eclipse-RCP. Bất cứ ai có ý tưởng về cách tôi có thể tải tài nguyên này từ một đường dẫn tương đối theo cách sẽ làm việc cả khi phương thức này được gọi từ một RCP-Plugin Eclipse hoặc bất kỳ ứng dụng khách nào khác không ?.
Tôi cần phải xây dựng một File
trên thư mục của đường dẫn tương đối này để tìm kiếm tệp bên trong. Tôi hoàn toàn bị mắc kẹt trên này ...
CẬP NHẬT: Nếu có một khả năng khác so với sử dụng File#list() để có được nội dung thư mục này sẽ đã giúp tôi ..
bất kỳ gợi ý đánh giá cao rất nhiều,
Bạn có thể liệt kê mã có liên quan không? –
@TonnyMadsen Hm, tôi có thể nhưng về cơ bản nó rất đơn giản: Tôi đang sử dụng this.getClass(). GetResource (relPath) để tải một đường dẫn trong lớp con của tôi. Điều này trả về cho tôi một URL bundleresource: // khi được thực hiện theo Eclipse RCP và một tệp: // URL khác. Cố gắng tạo một đối tượng tệp không thành công với URL bundleresource: // vì Tệp không hỗ trợ giao thức này. Vì tôi cần đọc nội dung thư mục của "relPath" nên tôi buộc phải sử dụng Tệp ... – quaylar
Làm cách nào để chuyển đổi URL thành Tệp? –