构建JavaFX程序后引用PDF文件

时间:2016-08-29 17:45:43

标签: java javafx

当我从IDE运行它时,我的程序运行正常。 但是,当我制作一个可执行jar时,它找不到我在源文件夹的子文件夹中的两个PDF文件。

我应该如何引用这些文件?

我的项目结构是:
资源(源文件夹)
- PdfTemplates(普通文件夹)
- - myyntiPohja.pdf
- - ostoPohja.pdf

当我从IDE运行程序时,我得到了带有以下引用的java.io.File:
文件offerDocument = new File(“resources / PdfTemplates / ostoPohja.pdf”);

文件offerDocument = new File(“resources / PdfTemplates / myyntiPohja.pdf”);

这工作正常,直到我用Export - >编译项目。 Runnable Jar文件或build.fxbuild - > ant build.xml并运行。

有人可以告诉我这是什么问题吗?

3 个答案:

答案 0 :(得分:0)

new File("resources/PdfTemplates/ostoPohja.pdf")在当前文件夹中搜索resources文件夹,然后在其中搜索PdfTemplates,并在搜索结果中搜索ostoPohja.pdf

如果您双击jar,就会在jar旁边显示这些文件夹结构。

其他选项是您可以将这些文件嵌入到Thread.currentThread().getClassloader().loadResourceAsStream(("resources/PdfTemplates/myyntiPohja.pdf")文件中(您很可能已经这样做过),然后您应该像$apple = array( array( 'id' => '1', 'name' => 'iPhone 4', 'link' => 'reparatur/apple/iphone-4.php', 'category' => 'iPhone', 'image' => 'images/iphone4.png' ), array( 'id' => '2', 'name' => 'iPhone 4s', 'link' => 'reparatur/apple/iphone-4s.php', 'category' => 'iPhone', 'image' => 'images/iphone4s.png' ) ); 一样加载它们,然后使用此流而不是文件。

答案 1 :(得分:0)

您是否有任何理由不能使用pdfs的完整目录?例如:

  

C:/ Users / 您的用户名 /Path/to/template.pdf

答案 2 :(得分:0)

你必须使用| NAME_OF_YOUR_CLASS | .class.getClass()。getResourceAsStream(" PATH_TO_FILE_RELATIVE_TO_ROOT_OF_PROJECT"。

上面返回一个InputStream对象。这可以这样使用:

BufferedReader br = new BufferedReader(new FileInputStream(*));