I have a Json file in resources and I am using this code to use the information that it have:
JsonClass myWantedInfo; Gson gson = new GsonBuilder().serializeNulls().create(); URL res = getClass().getClassLoader().getResource("file.json"); Writer writer = Files.newBufferedWriter(Paths.get(res.toURI())); gson.toJson(myWantedInfo, writer); writer.close();
When i use my IDE (Eclipse – Spring Tool Suite 4), this code works. But when i build a JAR of my proyect its throw me an error (FileNotFoundException). I have search a little and I found that the reason is that in my code the source is in src/main/resources but in the jar is at the root directory. But I don’t find how can I resolve this problem.
To build the jar, I go to the path where my pom is and, using cmd, I use: mvn clean install.
Sorry for my bad english.
Advertisement
Answer
I had a similar error with reading properties file. After a bit of research I added this piece of code to pom:
<build> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </resource> </resources> </build>
And this is how I read from the file:
/** * loads default config from internal source * * @return true/false upon success/failure of loading config */ private static boolean loadDefault() { if (null != properties) return false; try (InputStream resourceStream = Config.class.getClassLoader().getResourceAsStream("config.properties")) { properties = new Properties(); properties.load(resourceStream); return true; } catch (NullPointerException | IOException exception) { String detail = ExceptionHandler.format(exception, "Could not load default config"); log.error(detail); properties = null; return false; } }