доступ к jar-файлам из Tomcat - PullRequest
1 голос
/ 30 марта 2011

он там,

сейчас застряли на некоторое время. То, что я пытаюсь сделать, сводится к этому:

  • Я разработал небольшую библиотеку, которую я развернул в виде jar-файла. он содержит файл, который мне нужен для доступа, который находится в "json2 / json.js" (да, doin jscript / rhino вещи)
  • Я импортирую jar-файл в классический java-проект, он отлично работает. Файл найден и прочитан
  • Я импортирую тот же самый jar-файл в tomcat-project, который выглядит следующим образом:
  • .jsp, вызывающий java-класс
  • внутри java-класса я называю свою библиотеку, которая находится в каталоге tomcat / lib
  • теперь, когда я пытаюсь получить доступ к файлу, я не могу (нулевой указатель)

Источники:

        InputStream in = ClassLoader.getSystemResourceAsStream("json2/json.js");

когда я запускаю его внутри кота, (in == null).

для диагностики я импровизировал следующее:

        File fu = new File(new URI(this.getClass().getClassLoader().getResource("").toString()));
        String[] l = fu.list();
        for (int i = 0; i < l.length; i++) {
            System.out.println(i+"||"+l[i]);
        }

с классическим java-классом он создает только мой основной файл-класс. в tomcat он показывает содержимое каталога "tomcat / lib".

есть идеи? был бы очень признателен ...


EDIT

одна деталь, которую я забыл добавить (и которая действительно размалывает мои механизмы):

SParser.class.getClassLoader().getParent().getResource("")

дает ноль-птр. WTF? я не обращаюсь к конкретному ресурсу, но по-прежнему ничего не получается.

Ответы [ 2 ]

6 голосов
/ 30 марта 2011

Не использовать getSystemResourceAsStream().Используйте getResourceAsStream().В среде веб-приложений Tomcat системный загрузчик классов не знает ни Tomcat/lib, ни библиотек веб-приложений.

Кроме того, при получении ClassLoader предпочтительно использовать загрузчик класса контекста текущего потока.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("/json/json.js");
0 голосов
/ 30 марта 2011

Поместите файл JAR в каталог WEB-INF/lib вашего приложения.

...