Я попытался создать простой проект Maven, чтобы решить вашу проблему.
Моя структура исходного кода похожа на приведенную ниже.
simpleMavenProj
|-src/main/java/Hello.java
|-src/main/resources/hello.json
Содержание Hello.java
указано ниже.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class Hello {
public static void main(String[] args) throws IOException {
InputStream resourceInputStream = null;
URL resourceURL = Hello.class.getClassLoader().getResource("resources/hello.json");
if(resourceURL == null) {
System.out.println("Get the InputStream of hello.json in IDE");
resourceInputStream = new FileInputStream(Hello.class.getClassLoader().getResource("").getPath()+"../../src/main/resources/hello.json");
} else {
System.out.println("Get the InputStream of hello.json from runnable jar");
resourceInputStream = Hello.class.getClassLoader().getResourceAsStream("resources/hello.json");
}
System.out.println();
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(resourceInputStream));
String line = null;
while((line = br.readLine()) != null) {
builder.append(line+"\n");
}
br.close();
System.out.println(builder.toString());
}
}
И hello.json
:
{
"hello":"world"
}
Если вы разрабатываете в IDE, запустите код, и результат будет:
Get the InputStream of hello.json in IDE
{
"hello":"world"
}
Еще для генерациизапускаемый файл JAR, а затем запустить файл JAR через java -jar simpleMavenProj.jar
и в результате:
Get the InputStream of hello.json from runnable jar
{
"hello":"world"
}
Надеюсь, это поможет.Любая проблема, пожалуйста, не стесняйтесь, дайте мне знать.