У меня есть файл WAR веб-приложения Java, который зависит от нескольких jar-файлов в его каталоге WEB-INF \ lib. Один из этих JARS должен загрузить некоторые файлы конфигурации, выполнив class.getClassLoader().getResourceAsStream(...)
. Однако InputStream возобновляет нулевое значение. Есть ли проблема с этим подходом, когда JAR находится внутри WAR? Приложение развернуто на Tomcat6.
РЕДАКТИРОВАТЬ БОЛЬШЕ ИНФОРМАЦИИ:
Я пытаюсь загрузить запросы SQL из файлов, чтобы я мог их запустить. Они расположены в отдельном банке DAO в WAR-файле веб-приложения в разделе WEB-INF / lib
mywebapp.war
-- WEB-INF
-- lib
-- mydao.jar
---- com/companyname/queries
-- query1.sql
-- query2.sql
-- query3.sql
...
код, используемый для загрузки классов
public class QueryLoader {
private static final Logger LOGGER = Logger.getLogger(QueryLoader.class.getName());
public String loadQuery(String fileName) {
final String newline = "\n";
BufferedReader reader = new BufferedReader(new InputStreamReader(
QueryLoader.class.getClassLoader().getResourceAsStream(
"/com/companyname/queries/" + fileName)));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(newline);
}
} catch (IOException e) {
LOGGER.error(e);
}
Я также попытался изменить строку getResourceAsStream на
Thread.currentThread().getContextClassLoader().getResourceAsStream(
без успеха.
Моя среда разработки - MS Windows Vista, но я сталкиваюсь с той же ошибкой при запуске ее в этой среде и в Ubuntu.