2012-03-29 39 views

Trả lời

10

Bạn sẽ có thể sử dụng:

Program.launch(file); 

để mở tập tin (sử dụng ứng dụng mặc định hoặc tạo). Từ javadoc:

Khởi chạy hệ điều hành có thể thực thi được liên kết với tệp hoặc URL (http: // hoặc https: //). Nếu tệp là tệp thực thi thì tệp thực thi được khởi chạy. Lưu ý rằng Display phải tồn tại để đảm bảo rằng phương thức này trả về kết quả phù hợp.

Lưu ý rằng có một số điểm khác biệt trong Program.launch() (hoặc ít nhất có, mặc dù chúng có thể đã được sửa trong các phiên bản gần đây của thời gian chạy.) Tôi không thực sự nhớ chi tiết về lỗi, nhưng chúng tôi thực hiện một số kiểm tra để giải quyết một số vấn đề:

  1. Nếu bạn đang ở trên nền tảng Unix và bạn đang xác định đường dẫn tuyệt đối, có thể gặp sự cố khi mở tệp đó. Chúng tôi tiền tố đường dẫn tuyệt đối với /. - để /tmp/foo sẽ được dịch sang /./tmp/foo - mặc dù tôi không thực sự nhớ chi tiết về lỗi này nữa.

  2. Trên Windows, nếu bạn đang cố mở đường dẫn UNC - ví dụ: \\server\bar - bạn cần phải quấn chuỗi trong dấu ngoặc kép. Ví dụ: Program.open("\"\\server\bar\"");

+0

Trong ứng dụng của tôi trên winXp và win7 một 'Program.launch (" C: \\ dev \\ test.pdf ");' gọi công việc tốt - Acrobat Reader được mở ra và đó là nó. Cảm ơn bạn. – marioosh

+0

@ edward-thomson trong đó gói là "Chương trình" lớp tìm thấy ?? –

1

Hãy thử Desktop.open:

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

Cá nhân, tôi muốn có giải pháp SWT hơn giải pháp AWT. Cầu nối SWT <-> AWT thường không cần thiết và tốt hơn là không sử dụng nó trừ khi bạn phải sử dụng. –

+2

@PranitBauva Tại sao? – Baz

1

Có lẽ điều này có thể giúp tìm ra một quyết định: chúng tôi chạy vào PermGen rắc rối không gian khi gọi Desktop.open() - mà là ở AWTpackage - ra khỏi ứng dụng SWT của chúng tôi.

Vì vậy, tôi muốn Program.launch() hơn Desktop.open() trong môi trường SWT.

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