Struts 1 - Struts-taglib.jar не обнаруживается моим веб-приложением - PullRequest
1 голос
/ 14 марта 2010

Я использую Struts-1. Я разработал веб-приложение на основе стоек. Я использую теги struts в моих страницах JSP, поставляемых в struts-taglib.jar, вставляя следующие строки в файл JSP:

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>

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

org.apache.jasper.JasperException: The absolute uri: http://struts.apache.org/tags-html cannot be resolved in either web.xml or the jar files deployed with this application

Судя по приведенному выше исключению, приложение не нашло файл struts-taglib.jar.

Но я поместил struts-taglib.jar в каталог /WEB-INF/lib. Тогда в чем проблема?

Примечание: Вы также можете посмотреть Java - Проблема с развертыванием веб-приложения для получения дополнительной информации

Ответы [ 5 ]

4 голосов
/ 23 марта 2010

Вы говорите, что JAR появляется в WEB-INF / lib для веб-приложения; Я поверю тебе на слово и верю тебе.

Я бы посоветовал вам открыть struts-taglib.jar, открыть .tld для библиотеки тегов и убедиться, что значение , которое вы найдете в корне , соответствует uri для данного префикса в вашем JSPs. Я предполагаю, что URI не совпадает, что означает, что загрузчик классов не сможет найти библиотеку тегов, даже если JAR находится в CLASSPATH.

Это также может указывать на то, что изменение версии сделало URI в вашем JAR и JSP не синхронизированным.

Я только что скачал struts-1.3.10-all.zip и посмотрел на Struts-logic.tld, содержащийся внутри. Значение тега <uri> равно http://struts.apache.org/tags-logic, так что, похоже, у вас все в порядке.

.tld файлы выглядят так, как будто они извлечены из JAR. Найдите их в. \ Src \ el \ src \ main \ resources \ META-INF \ tld, поместите их в ваш / WEB-INF и явно обращайтесь к ним в своем web.xml. Это должно вас разобраться.

Я не верю, что .tld в web.xml больше необходим, но если мысль URI не удалась, вы можете попробовать добавить что-то похожее на этот пример из "JSTL в действии" в ваш web.xml (модифицированный соответственно):

<taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

Это может быть из-за того, что Struts 1.0 довольно старый на данный момент. Упаковка .tld в JAR taglib стала обычной практикой после разработки Struts 1.0.

0 голосов
/ 11 декабря 2010

Убедитесь, что ваш struts-taglib-1.3.10.jar находится непосредственно в / WEB-INF / lib, а не в какой-либо подпапке, например / WEB-INF / lib / struts

0 голосов
/ 08 декабря 2010

Дважды проверьте ваш URI и URI в файле TLD из struts-taglib.jar.

Обратите внимание, что URI был недавно изменен: http://wiki.apache.org/struts/StrutsUpgradeNotes12to13

0 голосов
/ 18 марта 2010

После развертывания файл jar находится в / WEB-INF / lib?Если не решит проблему вручную?

0 голосов
/ 14 марта 2010

Является ли /WEB-INF/lib в вашем классе?

...