Я запускаю проект Maven, который также является динамическим веб-проектом. Я использовал все библиотеки Spring в Maven. Я создал web.xml
, но когда я запускаю свой сервер Tomcat 7, я получаю следующее сообщение:
INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Я попытался удалить сервлет webapp/lib
, но это не сработало. Сообщите мне, что делать в моем случае.
Ответы:
Файл .jar API сервлета не должен быть встроен в веб-приложение, поскольку, очевидно, контейнер уже имеет эти классы в своем пути к классам: он реализует интерфейсы, содержащиеся в этом jar-файле.
Зависимость должна быть в области
provided
видимости, а не в области по умолчаниюcompile
в вашем Maven pom:источник
Вы получаете это предупреждающее сообщение, когда файл jar сервлета api уже загружен в контейнер и вы пытаетесь загрузить его еще раз из
lib
каталога.servlet.jar
из своегоlib
каталога.lib
каталоге, просканируйте путь сборки и удалите jar.Если вы запускаете проект maven, измените
javax.servlet-api
зависимость от области видимостиprovided
в pom.xml, поскольку контейнер уже предоставил банку сервлета сам по себе.источник
Чтобы исправить это, установите масштаб , чтобы при условии . Это говорит Maven использовать код servlet-api.jar только для компиляции и тестирования, но НЕ включать его в файл WAR. Развернутый контейнер «предоставит» servlet-api.jar во время выполнения.
источник
Следующая командная строка Windows может оказаться полезной при отслеживании вредоносного файла jar. он создает индекс всех файлов классов во всех банках в папке. Выполните из папки lib развернутого приложения, а затем найдите в файле index.txt класс-нарушитель.
источник
Область зависимости Maven
источник
Я боролся с этой проблемой и пробовал множество «решений».
Однако, в конце концов, единственное, что сработало, и на это потребовалось несколько секунд, было: удалить и снова добавить новый экземпляр сервера !
По сути, я щелкнул правой кнопкой мыши на моем сервере Tomcat в Eclipse в разделе «Серверы» и удалил его. Затем я добавил новый сервер Tomcat. Почистил и повторно развернул приложение и избавился от этой ошибки.
источник
Проверьте внутри следующего каталога файл jar el-api.jar: C: \ apache-tomcat-7.0.39 \ lib \ el-api.jar, если он существует, то в этом каталоге вашего веб-приложения WEB-INF \ lib \ el-api.jar банку нужно удалить
источник
эта ошибка может возникнуть, если ваш шаблон URL неверен.
например. Если вы написали @WebServlet («логин»), эта ошибка будет показана. Правильный - @WebServlet ("/ login").
источник
Исключения и
provided
зависимости не будут работать в дочерних проектах.Если вы используете наследование в проектах Maven, вы должны включить эту конфигурацию в родительский
pom.xml
файл. У вас будет<parent>...</parent>
раздел в вашем pom.xml, если вы используете наследование . Итак, у вас будет что-то вроде этого в вашем родителеpom.xml
:источник
Библиотека зависимостей JAX-WS «jaxws-rt.jar» отсутствует.
Перейдите сюда http://jax-ws.java.net/ . Загрузите дистрибутив JAX-WS RI. Разархивируйте его и скопируйте «jaxws-rt.jar» в папку библиотеки Tomcat «{$ TOMCAT} / lib«. Перезапустите Tomcat.
источник
Обычно, когда вы видите это сообщение, это неопасно. Если это говорит
Это означает, что он игнорирует ваш servlet-api-2.5.jar, потому что tomcat уже имеет встроенную версию этого jar-файла, поэтому он не будет использовать вашу. Обычно это не вызывает проблем.
Если, однако, говорится
WEB-INF/lib/my_jar.jar - jar not loaded...Offending class: javax/servlet/Servlet.class
то то, что вы можете сделать (в моем случае это закрашенная банка), выполняется
Зависимость $ mvn: дерево
и обнаружите, что у вас есть транзитивная зависимость от "чего-то", что зависит от jar-файла, который является либо servlet-api, либо чем-то подобным (например:)
tomcat-servlet-api-9.0.0
. Поэтому добавьте исключение к этому в свой pom, например: (в моем случае, tomcat, в вашем случае, вероятно, те, которые упомянуты в других ответах):источник
Удалить
servlet.jar
из исходнойweb-inf/lib
папки, так как она доступна вlib
папке tomcat, тогда она отлично работаетисточник