{"id":569,"date":"2020-04-16T09:17:56","date_gmt":"2020-04-16T07:17:56","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=569"},"modified":"2020-04-16T09:17:58","modified_gmt":"2020-04-16T07:17:58","slug":"spring-boot-java-io-filenotfoundexception-class-path-resource","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2020\/04\/spring-boot-java-io-filenotfoundexception-class-path-resource\/","title":{"rendered":"SPRING-BOOT: java.io.FileNotFoundException: class path resource"},"content":{"rendered":"\n<p>Spring boot ci da diversi metodi per accedere alle risorse disponibili. Una delle pi\u00f9 semplici prevede l&#8217;uso della annotion @Value e la classe Resouse<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Value(\"classpath:json\/tipologie.json\")\nResource tipologicheJson;<\/code><\/pre>\n\n\n\n<p>Nell&#8217;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.<\/p>\n\n\n\n<p>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<\/p>\n\n\n\n<p>Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception<\/p>\n\n\n\n<p>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<\/p>\n\n\n\n<p>Per risolvere il problema occorre leggere il dato usando il metodo getInputStrean che mi garantisce  la lettura del file anche dentro il jar<\/p>\n\n\n\n<p>InputStream inputStream = tipologicheJson.getInputStream();<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring boot ci da diversi metodi per accedere alle risorse disponibili. Una delle pi\u00f9 semplici prevede l&#8217;uso della annotion @Value e la classe Resouse Nell&#8217;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 &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2020\/04\/spring-boot-java-io-filenotfoundexception-class-path-resource\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">SPRING-BOOT: java.io.FileNotFoundException: class path resource<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[97],"tags":[101],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/569"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":1,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":570,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/569\/revisions\/570"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}