Загрузка файлов в JAR в Tomcat с использованием getResourceAsStream - PullRequest
1 голос
/ 16 октября 2011

Есть ли способ загрузить файлы, хранящиеся в JAR-файлах, используя getResourceAsStream из приложений Tomcat?

У меня есть библиотека, которая помещает все необходимые файлы в свой jar-файл вместе со скомпилированными классами.Этот код работает, когда библиотека используется в автономных приложениях, но не когда библиотека используется внутри Tomcat (с использованием java-моста PHP).

final InputStream stream = Object.class.getResourceAsStream("/styles/foo.xsl");

Я попытался без успеха , чтобы использоватьрешение, изложенное в вопросе getResourceAsStream не загружает ресурс в webapp и изменил код на

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("/styles/foo.xsl");

Последний код не работает ни когда библиотека используется автономно, либо когда библиотека используетсяв Tomcat.В обоих случаях stream == null.

Файл, который я пытаюсь загрузить, правильно хранится в JAR в /styles/foo.xsl.JAR со всеми классами и этими другими файлами: tomcat/webapps/iJavaBridge/WEB-INF/lib/.

Может кто-нибудь предложить кусок кода, который работает как в приложениях Tomcat, так и не Tomcat?

Ответы [ 2 ]

5 голосов
/ 16 октября 2011

Вам необходимо удалить ведущий слеш с пути. Это будет работать только с загрузчиками классов, которые не работают с корнем пути к классам.

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("styles/foo.xsl");
0 голосов
/ 16 октября 2011

если вы получили файл класса в jar с xsl, попробуйте следующее: final ClassLoader resourceLoader = com.mypackage.MyClassInJar.class.getClassloader (); final InputStream stream = resourceLoader.getResourceAsStream ("/ styles / foo.xsl");

если класса нет, просто создайте фиктивный класс.

Я думаю, что это должно сработать, потому что вы всегда получите ответственного за загрузку класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...