Từ ứng dụng của tôi được viết bằng java Tôi muốn mở một thư mục, bằng cách sử dụng trình thám hiểm tệp hệ điều hành.Mở đường dẫn bằng Desktop.open() từ java trên ubuntu (linux)
tôi sử dụng Desktop.open (new File (đường dẫn))
này hoạt động tốt trên các cửa sổ, nhưng trên ubuntu 11.10 (linux) nó không hoạt động. Sử dụng Desktop.open để mở một tệp không hoạt động, cả trên ubuntu và windows.
Sử dụng một bước ở giữa: Tệp fPath = tệp mới (fPath) và thử nghiệm nó với fPath.exists() và fPath.isDirectory() cả hai đều đúng.
sử dụng Desktop.open (new File (đường dẫn)) mang lại cho tôi ngoại lệ này:
java.io.IOException: Failed to show URI:file:/and/here/the/path/I/use/
at sun.awt.X11.XDesktopPeer.launch(Unknown Source)
at sun.awt.X11.XDesktopPeer.open(Unknown Source)
at java.awt.Desktop.open(Unknown Source)
tôi đã không thể kiểm tra điều này trên một máy tính táo, nhưng tôi hy vọng Desktop.open (mới tệp (đường dẫn)) là hệ thống độc lập .....
bằng cách này, các mã hoàn chỉnh:
Desktop desktop = null;
// Before more Desktop API is used, first check
// whether the API is supported by this particular
// virtual machine (VM) on this particular host.
if (!Desktop.isDesktopSupported()) {
// show Error
return;
}
desktop = Desktop.getDesktop();
String path = "here the path ";
// by the way: I use System.getProperty("file.separator") as file seperator
try {
File fPath=new File(path);
if(!fPath.exists()){
// show Error
return;
}
if(!fPath.isDirectory()){
// show Error
return;
}
desktop.open(new File(path));
} catch (IOException e) {
log.severe(e.getMessage());
e.printStackTrace();
// show Error
return;
}
Một số thông tin thêm: hệ điều hành: Linux (3.0.0-16-generic - amd64)
Java: 1.6.0_30-b12
Java nhà: /opt/java/64/jre1.6.0_30
bằng cách này, cuối cùng thì các mã có thể có rất nhiều nhỏ gọn hơn, tôi đã sử dụng nhiều dòng hơn để xây dựng ở một số kiểm tra thêm để gỡ lỗi này .... Desktop.getDesktop(). mở (tệp mới (đường dẫn)); nên làm các thủ thuật trong 1 dòng ... cố gắng nắm bắt xung quanh nó, sẽ không làm tổn thương. Cũng như Desktop.isDesktopSupported() bắt được. –
Vẫn không tìm được giải pháp đúng, nhưng cũng không có thời gian để kiểm tra máy tính khách hàng thouroughly .... (ví dụ như phiên bản adobe) –
Nhân tiện: Tôi thấy một trong những khách hàng của tôi có cùng một vấn đề với Cửa sổ PC .... –