【发布时间】:2021-12-05 16:20:57
【问题描述】:
我准备了一个 Java 库,它可以从特定的 json 文件生成可下载的 PDF 和 HTML。 该库包含一个控制器,可以调用该控制器来访问带有下载 HTML 和 PDF 文件的链接的页面。我想将控制器与 Thymeleaf 一起使用。
唯一的问题是,当我将库添加到项目时,库无法访问 jar 文件中的资源 - 我在 PDF 中使用的 *.jpeg 文件和我想与控制器一起使用的 *.html。
文件本身位于库的 *.jar 文件中,但是当我运行项目时,当应用程序尝试读取图像时出现 IO 异常。我尝试了不同的写入文件路径的方法,但即使我在库中硬编码图像的绝对路径,它也不起作用。
onOpenDocumentjava.io.FileNotFoundException: /home/nikiforov-java/.m2/repository/ru/companyname/libname/LibName/1.0-SNAPSHOT/LibraryName-1.0-SNAPSHOT.jar!/img/image.jpeg
Image 类来自 OpenPdf 库 - import com.lowagie.text.Image;
这就是我尝试读取 jpeg 文件的方式:
public Image image;
image = Image.getInstance("/home/nikiforov-java/.m2/repository/ru/companyname/libname/LibName/1.0-SNAPSHOT/LibraryName-1.0-SNAPSHOT.jar!/img/image.jpeg");
在提取到库之前,代码在主项目中,资源没有问题。当我将此功能提取到库中时,问题出现了。
如果是 HTML 模板 (documentation.html),我也遇到了异常: [o.s.web.servlet.DispatcherServlet] - 无法完成请求:javax.servlet.ServletException:无法解析名称为“dispatcherServlet”的 servlet 中名称为“documentation”的视图。
我尝试使用 spring.thymeleaf.prefix 更改 Thymeleaf 资源,但没有帮助。
暂时我只是不使用 *.jpeg 文件并从我的控制器返回硬编码的 HTML 字符串。
请帮助我找出我做错了什么。谢谢。
【问题讨论】:
-
您究竟是如何加载文件的?请出示相关代码
-
@dunni,这就是我尝试读取 jpeg 文件的方式:
public Image image; Image = Image.getInstance("/home/nikiforov-java/.m2/repository/ru/companyname/libname/LibName/1.0-SNAPSHOT/LibraryName-1.0-SNAPSHOT.jar!/img/image.jpeg");Image 类来自 OpenPdf 库 -import com.lowagie.text.Image;当然,我不想使用绝对路径文件。在提取到库之前,代码在主项目中,资源没有问题。当我将此功能提取到库中时,问题出现了。