最近、コードを書いているときに、resources ファイル以下のリソースを以下の 2 つの方法で取得する場合、エディタで実行すると取得できるのに、jar パッケージにパッケージ化すると取得できないことが分かりました。元のプロジェクトが jar パッケージにパッケージ化された後、これはフォルダーではなくファイルであるため、この方法ではリソース ファイルの下のリソースを取得できないことがわかりました。
//1.通过ClassPathResource 类获取
ClassPathResource resource = new ClassPathResource("pdfTemplates/logo.jpg");
//2.通过ResourceUtils获取
ResourceUtils.getFile("classpath:").getPath();
ではどうするかというと、以下の方法でパッケージ化されたリソース配下のリソースを取得できます。
//读取resources的文件,打成jar包后不能直接读取,需要通过这种方式读取
//这个是直接取的resources下的文件,所以直接写resources下的相对路径就行,不用加classpath:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("pdfTemplates/logo.jpg");
画像リソースを取得しました この取得メソッドはファイルストリームを取得するので、それを直接使いたい方法に変換できるので、byte[]に変換しました。
皆さんのお役に立てれば幸いです! !!