当我从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并运行。
有人可以告诉我这是什么问题吗?
答案 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(*));