Похоже, я не могу использовать Desktop.open () для файлов PDF независимо от их местоположения. Вот небольшая тестовая программа:
package com.example.bugs;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
public class DesktopOpenBug {
static public void main(String[] args)
{
try {
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()) {
desktop = Desktop.getDesktop();
for (String path : args)
{
File file = new File(path);
System.out.println("Opening "+file);
desktop.open(file);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Если я запускаю DesktopOpenBug с аргументами c:\tmp\zz1.txt c:\tmp\zz.xml c:\tmp\ss.pdf
(3 файла, которые у меня случайно оказались), я получаю такой результат: (файлы .txt и .xml открываются нормально)
Opening c:\tmp\zz1.txt
Opening c:\tmp\zz.xml
Opening c:\tmp\ss.pdf
java.io.IOException: Failed to open file:/c:/tmp/ss.pdf. Error message:
The parameter is incorrect.
at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
at sun.awt.windows.WDesktopPeer.open(Unknown Source)
at java.awt.Desktop.open(Unknown Source)
at com.example.bugs.DesktopOpenBug.main(DesktopOpenBug.java:21)
Что, черт возьми, происходит? Я использую WinXP, я могу набрать "c: \ tmp \ ss.pdf" в командной строке, и он открывается очень хорошо.
edit: , если это пример Ошибка Sun Java # 6764271 , пожалуйста, помогите, проголосовав за нее. Какая боль. >: (* 1014 *