2013-09-26 4 views
1

Я создаю графический интерфейс, и я собирался добавить простой pdf-файл в качестве файла справки. я включил его в пакет ресурсов и поиск на этом форуме я придумал следующий код:Доступ к файлу PDF, хранящемуся в .jar

private void GuideActionPerformed(java.awt.event.ActionEvent evt) {          
    if (Desktop.isDesktopSupported()) { 
    try { 
     File myFile = new File(("Help.pdf")); 
     if (!myFile.exists()) { 
      // In JAR 
      InputStream inputStream = ClassLoader.getSystemClassLoader() 
           .getResourceAsStream("resources/manual.pdf"); 
      // Copy file 
      OutputStream outputStream = new FileOutputStream(myFile); 
      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = inputStream.read(buffer)) > 0) { 
       outputStream.write(buffer, 0, length); 
      } 
      outputStream.close(); 
      inputStream.close(); 
     } 
     Desktop.getDesktop().open(myFile); 
    } catch (IOException ex) { 
     // no application registered for PDFs 
    } 
} 

Проблема заключается в том, что теперь читатель PDF не может получить доступ к файлу, так как он уже используется приложением Java. Есть ли способ решить эту проблему? В противном случае я просто добавлю файл на dist и выработаю путь к ресурсу.

+0

Вы пробовали? 'InputStream input = getClass(). GetResourceAsStream (" resources/manual.pdf ");' –

+0

Была ли, по крайней мере, копирование? – mkl

ответ

0

Я пробовал ваш код, и он работает очень хорошо, проверьте, если в исходном коде вы создали папку resources с файлом manual.pdf внутри. Также, когда вы создаете jar, убедитесь, что эти файлы экспортированы.

Смежные вопросы