SPRING-BOOT: java.io.FileNotFoundException: class path resource

Spring boot ci da diversi metodi per accedere alle risorse disponibili. Una delle più semplici prevede l’uso della annotion @Value e la classe Resouse

Nell’esempio sopra riportato sto definendo un file tipologie.json disponibile nel classpath dentro la cartella json e posso accedervi usando i meto della classe Resource.

Fin qui tutto bene, se lanciamo con maven la direttiva spring-boot: run il sistema funziona correttamente ma se rilasciamo il nostro applicativo in formato jar ecco che otteniamo questa eccezione quando cerchiamo di accedere al file

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

java.io.FileNotFoundException: class path resource [json/tipologie.json] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/nome,.jar/BOOT-INF/classes!/json/tipologie.json

Per risolvere il problema occorre leggere il dato usando il metodo getInputStrean che mi garantisce la lettura del file anche dentro il jar

InputStream inputStream = tipologicheJson.getInputStream();