Проекты Eclipse против пути сборки

Я создаю библиотеку, которая оборачивает некоторый код вокруг клиента spymemcached. Это называется CacheClient. Это простой Java-проект. Я поместил файл spymemcached.jar в его папку lib.

Вот как это выглядит, также вы можете увидеть настройки пути сборки:

Библиотека: проект CacheClient: cacheclient.jar

  • lib
    • spymemcached.jar

Путь сборки Java/вкладка «Библиотеки»: spymemcached.jar — CacheClient/lib/spymemcached.jar

Что я делаю, так это создаю простой веб-проект Java, который использует эту библиотеку.

WebApp: проект ServiceWebApp: servicewebapp.war

  • WebContent
    • WEB-INF
      • lib
        • EMPTY

Путь сборки Java/вкладка «Проекты»: CacheClient

Итак, путь сборки моего веб-приложения настроен на использование проекта CacheClient. Я скопировал cacheclient.jar в каталог lib tomcat и развернул ServiceWebApp.

Когда я запускаю веб-приложение, оно дает сбой, поскольку говорит, что мой код CacheClient ищет классы spymemcached (ClassNotFoundException).

Я мог бы решить эту проблему, поместив spymemcached.jar в каталог lib tomcat, но было бы здорово, если бы было другое решение.

Любое предложение приветствуется.

Спасибо,


person Zoltan Szabo    schedule 23.05.2014    source источник


Ответы (2)


Самый простой способ сделать библиотеку доступной в вашем веб-приложении — поместить jar библиотеки в каталог WEB-INF/lib.

Если вы не хотите делать это вручную, проверьте эту ссылку о том, как это можно автоматизировать: Автоматическое добавление сторонних jar-файлов в WEB-INF/lib с помощью Eclipse/Tomcat

person Oleg Gryb    schedule 23.05.2014
comment
Хорошо, это было решением. Я поместил cacheclient.jar, а также spymemcached.jar в каталог WEB-INF/lib веб-приложения. Однако файл spymemcached.jar также находится в каталоге библиотеки cacheclient.jar. Как я вижу, ссылка на класс из jar внутри библиотеки изначально не поддерживается, поэтому необходима One-Jar или любая другая упаковка. - person Zoltan Szabo; 23.05.2014

В вашем случае cacheclient.jar зависит от spymemcached.jar. Но когда ваш cacheclient.jar собран, он не упакован с spymemcached.jar. Так что просто скопировать cacheclient.jar в папку tomcat/lib недостаточно. Во-первых, не рекомендуется копировать файлы jar в папку tomcat lib.

Что вы можете сделать, так это скопировать обе свои банки в servicewebapp.war> WenContent> WEB-INF> lib, которые должны работать.

person vkg    schedule 23.05.2014