2014-08-14 2 views
0

Я пытаюсь включить файл в мою (исполняемую) банку при экспорте моего приложения. Это файл ttf, который важен для моего PDF-генератора. Я поставил файл под src\pdf_content\ но после экспорта и запуска программы он говорит мне, что файл не может быть найдено:Включить файл в экспортированный JAR с использованием пакетов, не работающих

java.io.FileNotFoundException: src\pdf_content\bgcs.ttf (The system cannot find the path specified) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:131) 
     at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.ja 
     at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.ja 
     at com.hp.deu.vw.fis.db.schemavergleich.PDFDocumenter.createPDFDocumentati 
     at com.hp.deu.vw.fis.db.schemavergleich.MainClass.createPDFandOutput(MainC 
     at com.hp.deu.vw.fis.db.schemavergleich.MainClass.start(MainClass.java:242 
     at com.hp.deu.vw.fis.db.schemavergleich.MainClass.main(MainClass.java:191) 

Запуск программы в Eclipse, работает просто отлично.

я получить доступ к файлу, используя

// APACHE PDFBOX METHOD 
bcgsFont = PDTrueTypeFont.loadTTF(doc, "src/pdf_content/bgcs.ttf"); 
+0

1) Как у вас доступ к этому файлу? Предоставить фрагмент кода. 2) Вы уверены, что нужный файл находится в 'jar'? Вы можете проверить это вручную, jar - это просто архив, который можно извлечь. – Andremoniy

+0

Не знал, что к ним можно легко обращаться. Да, файл находится в jar, расположенном под 'pdf_content \ bcgs.ttf', поэтому доступ через' src \ pdf_content \ bcgs.ttf' невозможен. Добавлен способ доступа к файлу к исходному вопросу. Почему экспорт меняется так, как все расположено? – schneiti

ответ

0

Вы должны пройти в loadTTF метод InputStream вместо пути к файлу. InputStream может быть использован с использованием .class.getResourceAsStream() метода. Что-то, как это:

bcgsFont = PDTrueTypeFont.loadTTF(doc, PdfContent.class.getResourceAsStream("bgcs.ttf")); 

Какой класс использовать вместо PdfContent - я не знаю структуру вашего проекта. Например, любой класс, который находится в пакете pdf_content.

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