解決:class path resource[]cannot be resolved to absolute file path

3514 ワード

エラーメッセージ

java.io.FileNotFoundException: class path resource [template/inuModel.inu] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/usr/local/jar/dmb-core.jar!/BOOT-INF/classes!/template/inuModel.inu

エラーコード

// inu 
Resource resource = new ClassPathResource("template/inuModel.inu");
File inuModel = resource.getFile();

エラー原因

ClassPathResourceでresourcesディレクトリのテンプレートファイルを取得すると、resource.getFile()に直接取得され、エラーが発生します.
なぜなら、プロジェクトがjarの形式に構築された後、resourcesディレクトリのファイルは直接システムに存在するのではなく、jarファイルにネストされているからです.

解決策

resource.getInputStream()の方法を使用して、ファイルのInputStreamを取得する.次に、org.apache.commons.io.FileUtilscopyToFile()メソッドまたはcopyInputStreamToFile()メソッドを使用して、ストリームをコピーするターゲットファイル
// inu 
Resource resource = new ClassPathResource("template/inuModel.inu");
File inuModel = new File(filePath);
FileUtils.copyToFile(resource.getInputStream(), inuModel);