簡體   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