Я пытаюсь загрузить несколько ресурсов в приложении веб-запуска Java.
Я изначально пытался загрузить их, используя:
ClassLoader loader = MyClass.class.getClassLoader();
URL url = loader.getResource("resourceName");
File file = new File(url.toURI());
Но это не сработало - это вызвало исключение IllegalArgumentException. Дальнейшие исследования показали, что этот подход не работает с доступом к ресурсам из файлов JAR, и что мне нужно использовать следующий подход:
ClassLoader loader = MyClass.class.getClassLoader();
InputStream in = loader.getResourceAsStream("resourceName");
Однако я получаю странные результаты, когда запускаю это с помощью Jnlp. Если я запускаю следующее:
public static void main(String[] args) throws IOException, URISyntaxException {
ClassLoader loader = MyClass.class.getClassLoader();
String r = "resourceName";
URL url = loader.getResource(r);
System.out.println(url!=null);
InputStream in = loader.getResourceAsStream(r);
System.out.println(in!=null);
}
В моей среде IDE я становлюсь правдивым (как я и ожидал).
При запуске из jnlp я получаю true для URL, но false для InputStream.
Есть идеи, что я могу делать не так?
Существуют ли более эффективные способы загрузки ресурсов для использования в приложении веб-запуска java?
Редактировать: Для информации, мои ресурсы находятся в MyProject / src / main / resources, а когда генерируется jar, ресурсы находятся в корне jar.