2016-04-26 3 views
1

У меня есть ресурсы в моем проекте java в папке ресурсов. Когда я использую следующие способы [2] для загрузки ресурса, он работает. Но когда я развертываю свою войну в wildfly 9.x, она говорит, что не может найти файл file.avsc. Указывает путь класса как [1]; Как я могу загружать файлы ресурсов в jboss war? неКак загрузить файлы ресурсов в jboss war - wildfly9.xV

[1]

java.io.FileNotFoundException: /content/ratha.war/WEB-INF/lib/core-0.0.1-SNAPSHOT.jar/avro_schemas/file.avsc (Нет такого файла или каталог)

[2]

ClassLoader classLoader = getClass().getClassLoader(); 

    ClassLoader classLoader = this.getClass().getClassLoader(); 

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 

    File file = new File(classLoader.getResource("avro_schemas/file.avsc").getFile()); 

ответ

1

Попробуйте Class.getResourceAsStream() метод:

this.getClass().getResourceAsStream("avro_schemas/file.avsc"); 

Возможно, вам придется немного помахать тропой. Вот формальная документация о том, как должен строиться путь: Class.getResourceAsStream

Проблема заключается в том, как Jboss создает свою структуру ClassLoader. Вам нужно будет построить путь для соответствия тому, как класс представлен в классе classLoader classpath.

Другие хорошие описания для этого можно найти здесь: How to read a file from jar in Java? и здесь: How can I read a resource file in an unexploded war file deployed in Tomcat?

Где это предполагает, вы должны иметь ведущий «/», чтобы начать путь к файлу.

+0

Спасибо, что работает .. – Ratha

Смежные вопросы