Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Может ли jar содержать lib


Автор: oson 10.9.2009, 21:37
Делаю компонент с определенным набором фич. Этот компонент использует castor.jar например.
Получается, что для того, чтобы компонент работал, нужен этот castor.jar где-то в classpath.
Но у самого jar внутри же нет папки lib. Куда кидать этот castor.jar
И второе - пишу в pom.xml для сборки моего компонента
Код



<dependency>
            <groupId>org.codehaus.castor</groupId>
            <artifactId>castor</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

Provided - значит что мавен подкачает эту библиотеку в домашнюю директорию и будет использовать ее классы при компиляции. А когда в runtime уже будет работать компонент - то где ж он должен брать эти классы из castor.jar?
Просветите плиз.

Автор: Juggernaut 11.9.2009, 09:00
Привет.
Исходя из приведенной ниже спецификации - в jar - файлах нельзя хранить либы, нужны чтобы они были доступны runtime, т.е. находились в ClassPath.
Либо в специальных папках сервера приложений (специфичны для каждого отдельного сервера)
http://java.sun.com/j2ee/verified/packaging.html

Упаковать либы вместе с модулями можно при использовании WAR-файлов (папка WEB-INF/lib).

Автор: Nofate 11.9.2009, 11:54
Eclipse, например, умеет при формировании jar'a внедрять туда библиотеки. По сути - вытаскивает классы из библиотеки и кладет их в ваш jar. Плюс, конечно, содержимое META-INF сливает в одну общую директорию.

Автор: powerOn 11.9.2009, 20:46
Цитата(oson @  10.9.2009,  22:37 Найти цитируемый пост)
. А когда в runtime уже будет работать компонент - то где ж он должен брать эти классы из castor.jar?


нужно с помощью мавена настроить classpath в манифесте и скопировать библиотеки в нужную папку например с помощью dependency плагина.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)