2009-02-18 23 views
6

Wyświetlam listę plików; np. xls, doc, pdf, odt itp. w mojej aplikacji Java (Eclipse RCP). Kiedy użytkownik kliknie plik, chcę uruchomić odpowiednią (zgodnie z tym, co myśli system operacyjny) natywną aplikację, tak jak dzieje się to w Eksploratorze Windows lub Finderze.Jak uruchomić domyślną (natywną) aplikację dla danego pliku z Java?

I chociaż jestem tutaj: Byłoby miło również wyświetlać te same ikony, które Finder lub Explorer używa dla różnych typów plików.

Czy istnieje biblioteka lub wtyczka Eclipse dla tego?

+1

To wydaje się być duplikat to pytanie: http://stackoverflow.com/questions/325299/cross-platform-way-to-open-a- file-using-java-1-5 –

+1

Niezupełnie, zauważ ograniczenia Java 1.5: "Wiem, że Java 1.6 wprowadziła Desktop API, ale potrzebuję rozwiązania dla Java 1.5." – Jonik

Odpowiedz

2

Wygląda na to, że szukasz Java Activation Framework ("JAF"). Ten interfejs API pozwala określić, jakie pliki i jakie akcje można na nich wykonywać. Lub alternatywnie Java Desktop Integration Component ("JDIC"). JDIC pozwala tworzyć i bez wątpienia wyszukiwać skojarzenia plików.

Oba projekty wydają się być w stanie półzawartym (westchnienie). Ale w dzisiejszych czasach to jest normalne dla kursu dla Słońca. Inną rzeczą, o której wiem, jest pewna specyficzna dla systemu Windows biblioteka stron trzecich oparta na JNI pod numerem Winpack. Robi też wiele innych rzeczy.

Możesz get the associated icon używać klasy FileSystemView (Java 1.4+).

+0

Hmm, Desktop.open() wydaje się być najprostszym sposobem. Jeśli można używać Java 6, czy są jakieś zalety korzystania z jednej z tych bibliotek? – Jonik

6

Znalazłem API w SWT Eclipse'a, który wydaje się być podstępem: org.eclipse.swt.program.Program "zapewnia dostęp do urządzeń umożliwiających poznanie specyficznych aspektów uruchomienia zewnętrznego programu w systemie operacyjnym."

Posiada metody pozwalające znaleźć program dla danego rozszerzenia pliku, pobrać ikonę programu, a nawet uruchomić program.

11

Co chcesz jest java.awt.Desktop:

Desktop.getDesktop().open(file); 
+1

Pulpit nie działa dobrze w systemie Windows: 'java.io.IOException: Nie można otworzyć pliku:/C: /Documents%20and%20Settings/Administrator/Desktop/test.pdf. Komunikat o błędzie: Aplikacja nie została znaleziona \t w sun.awt.windows.WDesktopPeer.ShellExecute (Nieznane źródło) ~ [na: 1.6.0_26] ' – Eero

+2

Eero, funkcja działa zgodnie z projektem: http://download.oracle.com /javase/6/docs/api/java/awt/Desktop.html#open%28java.io.File%29 open wywoła wyjątek IOException ", jeśli podany plik nie ma powiązanej aplikacji lub powiązana z nim aplikacja nie zostanie uruchomiona". Możesz pomyśleć o monitowaniu o zastosowanie aplikacji, jeśli zgłoszony zostanie wyjątek IOException. –