Java возвращает значение null при попытке получить файл из файла jar

Файлы jar создаются во время сборки и содержат файлы xml, которые необходимо читать во время выполнения. Я использую веб-сайт Java, который загружает этот файл jar в локальную папку. локальный путь к месту хранения jar: C:\Users\username\Desktop\Project\jars

Эта папка содержит несколько файлов jar. Чего я пытаюсь добиться, так это того, чтобы код находил конкретную банку на основе имени файла, который он содержит, и читал файл xml, содержащийся в банке. Файл xml находится в папке с именем xmlfiles в банке, но возвращает значение null.

Примечание. Раньше это работало с предыдущими версиями Java 3-5, но после нашего перехода на Java 7 этот метод возвращает значение null. Это часть метода, вызывающая исключение

private InputStream Jar(String _filename) throws  IOException
    {
      String path = "xmlfiles/" + _filename;
      InputStream content = Thread.currentThread().getContextClassLoader().getResourceAsStream(path) 
        System.out.println("loaded xml);

    }

Я также пытался получить URL-адрес и распечатать строку, но получил исключение fileNotfound.

URL path = Thread.currentThread().getContextClassLoader().getResource(url);

Я пробовал различные решения с подобным вопросом здесь, но ни одно из решений не может найти файл (возврат нуля или файл не найден) InputStream из jar-File всегда возвращает null Parse XML-файл в банке Доступ к файлу внутри файла .jar


person user3581872    schedule 15.05.2014    source источник
comment
Эти банки находятся в вашем пути к классам во время выполнения?   -  person fge    schedule 15.05.2014
comment
@fge да, они в пути к классам   -  person user3581872    schedule 15.05.2014
comment
Ну, тогда просто выполните поиск ресурсов, не нужно называть банку; или у вас есть файлы с одинаковым путем в разных банках?   -  person fge    schedule 15.05.2014
comment
@fge Путь одинаков для всех сгенерированных jar-файлов, но имя файла отличается в зависимости от _filename   -  person user3581872    schedule 15.05.2014
comment
Это очень плохая идея! По сути, это означает, что вы не можете использовать поиск ресурсов, но должны пройти по всем URL-адресам загрузчика классов и найти подходящую банку, прежде чем открывать ее и извлекать файл... Сделайте свою жизнь более простой: пусть пути будут разными для всех ваших ресурсов; тогда будет достаточно простого поиска ресурсов.   -  person fge    schedule 15.05.2014