Я хочу загрузить все свойства пакета ресурсов из classpath, чтобы я мог показывать поддерживаемые языки. Я получил ссылку от здесь и попробовал 1-е решение. Это работает файл, когда я запускаю свой код из затмения. Но когда я создавал исполняемый файл JAR, он не мог читать файлы. Я не знаю, почему при запуске из команды java -jar AppName.jar
поведение отличается
Мой код:
public static List<String> getResourceFiles(String path) throws IOException
{
List<String> filenames = new ArrayList<>();
InputStream in = getResourceAsStream(path);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
System.out.println("br = " + br.readLine());
String resource;
while ((resource = br.readLine()) != null)
{
filenames.add(resource);
}
return filenames;
}
private static InputStream getResourceAsStream(String resource)
{
final InputStream in = getContextClassLoader().getResourceAsStream(resource);
System.out.println("input stream = " + in);
return in == null ? FileUtil.class.getResourceAsStream(resource) : in;
}
private static ClassLoader getContextClassLoader()
{
return Thread.currentThread().getContextClassLoader();
}
Здесь я заметил, что InputStream имеет значение null, когда я запускаю из команды, но при запуске из eclipse InputStream не имеет значение null.
Как решить эту проблему, чтобы я мог читать файлы ресурсов при запуске из команды?