繁体   English   中英

如何在 Java 库中指定资源路径?

[英]How to specify resourses path in a Java library?

我准备了一个 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) 的情况下,我也有一个异常:[osweb.servlet.DispatcherServlet] - 无法完成请求:javax.servlet.ServletException:无法解析名称为“文档”的 servlet 中名称为“的视图”调度程序Servlet'。

我尝试使用spring.thymeleaf.prefix更改 Thymeleaf 资源,但没有帮助。

暂时我只是不使用 *.jpeg 文件并从我的控制器返回硬编码的 HTML 字符串。

请帮我弄清楚我做错了什么。 谢谢。

问题是这样解决的:

import com.lowagie.text.Image;
....
public class PageNumbersWatermark extends PdfPageEventHelper {

    public Image headerImage;
...
    public void onOpenDocument(PdfWriter writer, Document document) {

        URL resourceUrl = getClass().getResource("/img/logo.gif");
        headerImage = Image.getInstance(resourceUrl);
....
    }
}

公共最终类 Class 中的公共 URL getResource(String name) 查找具有给定名称的资源。

在这段代码中使用了剪断的 OpenPdf 库。

*.gif 文件位于资源目​​录 (projectname/src/main/resources/img/logo.gif) 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM