Ответ 1
Загрузите следующие банки и добавьте их в каталог WEB-INF/lib
:
Когда я запускаю свое приложение после ввода URL-адреса, это исключение приходит. Я использую Eclipse и Tomcat7.0.35. Я также добавил Jstl.jar и jstl1.2.jar
Мой код
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Загрузите следующие банки и добавьте их в каталог WEB-INF/lib
:
Ошибка говорит вам, что он не может найти класс, потому что он недоступен в вашем приложении.
Если вы используете Maven, убедитесь, что у вас есть зависимость для артефакта jstl
:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Если вы не используете его, просто убедитесь, что вы включили JAR в свой путь к классам. См. этот ответ для ссылок на скачивание.
По умолчанию контейнер Tomcat не содержит библиотеки jstl. Чтобы исправить это, объявляет jstl.jar в файле Maven pom.xml, если вы работаете в проекте Maven или добавляете его в свой путь к классу приложений
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Добавьте jstl
jar в свой путь к классу приложений.
Вероятно, библиотеки jstl отсутствуют в вашем пути к классам/недоступны tomcat.
В каталоге WEB-INF/lib
вам нужно добавить, по крайней мере, следующие файлы jar:
Просто быстрый комментарий: иногда Maven не копирует jstl-.jar в папку WEB-INF, даже если у pom.xml есть запись для него.
Мне пришлось вручную скопировать банку JSTL в /WEB -INF/lib в файловой системе. Это решило проблему. Эта проблема может быть связана с плагином для упаковки Maven War.
Добавить JSTL library в зависимости от вашего проекта (javax.servlet.jsp.jstl.core.Config
является частью этого пакета).
Например, если вы использовали Gradle, вы можете написать в файле build.gradle:
dependencies {
compile 'javax.servlet:jstl:1.2'
}
У меня была та же проблема. Перейдите в Project Properties → Deployment Assemplbly и добавьте jstl jar