2011-09-21 24 views
8

Tôi muốn kết hợp một loại tệp cụ thể với ứng dụng của mình, vì vậy khi tôi nhấp đúp vào một trong các tệp thuộc loại cụ thể này, ứng dụng của tôi sẽ mở ra. Điều này hoạt động tốt, nhưng tập tin tôi nhấp đúp không được chuyển như một đối số cho chương trình của tôi.Làm cách nào để chuyển một tệp làm đối số cho ứng dụng Java của tôi được tạo bằng cách sử dụng Trình chặn JAR?

Nếu tôi chẳng hạn liên kết đơn đăng ký của tôi với txt tệp và tôi nhấp đúp vào todo.txt, đơn đăng ký của tôi sẽ mở, nhưng tôi không biết tệp nào là txt tôi đã nhấp đúp.

Từ những gì tôi có thể đọc, đây là làm thế nào nó phải để làm việc trên OS X, và thay vì dựa vào hành vi mặc định (làm thế nào nó hoạt động trên ví dụ Windows), tôi nên sử dụng ApplicationListener.handleOpenFile(); từ com.apple.eawt. Khi tôi cố gắng này, tuy nhiên, tôi được nói rằng tôi không được phép làm như vậy: hạn chế

truy cập: Loại ApplicationListener không thể truy cập do để hạn chế thư viện cần /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/lớp/ui.jar

Trong another question here, một anh chàng nói rằng ông tìm thấy giải pháp trên some Chinese website, và người kia nói nó không phải là quy phạm pháp luật theo thỏa thuận cấp phép Java điều kiện.

Tôi không thể đề cập đến nó trong số Mac OS X Developer Library và bất kỳ liên kết nào có vẻ hữu ích trên this site about JAR Bundler chỉ gửi tôi đến a dead page on Apple's Developer site.

Tôi đang thiếu gì? Có phải là gần như không thể làm điều này, mặc dù nó tầm thường trên các hệ điều hành khác?

Có lẽ đáng nói ... từ JAR file không thể liên kết với các chương trình trên OS X, tôi đã tạo ra một OS X Ứng dụng Bundle sử dụng JAR Bundler; một công cụ của Apple được thiết kế đặc biệt cho mục đích có thể xử lý các ứng dụng Java như các ứng dụng OS X nguyên gốc. Sử dụng đây là những gì cho phép tôi liên kết loại tệp với ứng dụng của tôi ngay từ đầu.

Trả lời

2

Tôi đã sử dụng OSXAdapter cho các tùy chọn, về và bỏ chức năng. Bạn có thể tận dụng cách tiếp cận nội tâm của nó để tránh hạn chế. Vì com.apple.eawt.ApplicationListener không còn được dùng nữa, bạn có thể thử dùng com.apple.eawt.OpenFilesHandler.

+0

'OpenFilesHandler' cung cấp cho tôi lỗi giới hạn truy cập giống như trước đây. Ngoài ra, tôi đã không thể tìm thấy bất cứ điều gì trong 'OSXAdapter' - là không có tài liệu có sẵn cho nó? – kba

+0

Tôi chỉ cần nhấp vào 'Tải xuống Mã mẫu' và nhập 'ant run'. Từ 'README.txt':" Mẫu cũng hỗ trợ việc chuyển giao tài liệu từ Trình tìm kiếm bằng cách thực hiện phương thức 'handleOpenFile' và đăng ký các loại tệp được hỗ trợ trong tệp' Info.plist' của nó. " – trashgod

+0

Cảm ơn bạn, rằng (cuối cùng) đã làm việc. Nhưng nghiêm túc, vít bất cứ ai quyết định rằng 'try {...} catch (Exception ex) {}' là một ý tưởng hay. Khó gỡ lỗi khi không có gì xuất hiện trong bảng điều khiển. – kba

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