gpt4 book ai didi

java - 从我的 jar 中访问 pdf 文件

转载 作者:行者123 更新时间:2023-12-01 04:47:00 24 4
gpt4 key购买 nike

我希望能够通过单击鼠标打开帮助 PDF 文件,该 PDF 文件包含在 .jar 中(并导入到 Eclipse)。

我正在使用 mouseListener(通过 windowbuilder 添加)调用 Help();。鼠标事件工作正常。我遇到的问题是我不确定如何访问 PDF 文件,我不断收到 NullPointerException 报告。

我当前的代码是;

if (Desktop.isDesktopSupported()) {
try {
java.io.InputStream is = getClass().getResourceAsStream("/nullpdf.pdf");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
String line;

while ((line = br.readLine()) !=null){
sb.append(line);
}

br.close();
isr.close();
is.close();
File afile =new File(line);
Desktop.getDesktop().open(afile);
}

catch (IOException ex) {
System.out.println("NO PDF READER INSTALLED");
}
}

我还尝试了更完整的 nullpdf 文件路径(即“package/co/uk/TabSync/nullpdf.pdf”),但出现了相同的 NullPointerException

我现在已经编辑了代码来编写临时文件,但它仍然无法工作:

public void Help() {
if (Desktop.isDesktopSupported()) {
try {
String tempFile = "nullpdf";
System.out.println(tempFile);
File temp =File.createTempFile(tempFile, "/home/geeky/Desktop/nullpdf.pdf");
Desktop.getDesktop().open(temp);
}
catch (IOException ex) {
ex.printStackTrace();
System.out.println("NO PDF READER INSTALLED");
}
}
}

我还尝试了桌面上 pdf 文件的绝对路径以及 nullpdf.pdf。如果我只使用 nullpdf.pdf 那么我会得到一个 leafpad 窗口,打开时里面什么也没有。如果我尝试使用桌面的直接文件路径,我会得到以下结果:

NO PDF READER INSTALLED
java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.checkAndCreate(File.java:1717)
at java.io.File.createTempFile0(File.java:1738)
at java.io.File.createTempFile(File.java:1850)

我是否需要做一些事情来授予应用程序写入我的文件系统的权限(我习惯了 android 开发,这通常是一个问题)。

感谢您的帮助。

最佳答案

InputStream input = getClass().getResourceAsStream("/classpath/to/file");

该路径必须以“/”开头,就像它在您的类路径中一样。因此,如果您的文件位于 com.test 中,并且您的文件为 myPDF.pdf,那么您的路径应为 /com/test/myPDF.pdf >.

关于java - 从我的 jar 中访问 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com