Ошибка проекта Struts2 - пакет javax.servlet.jsp не существует

Я настраивал проект Struts2 в Netbeans7 и на самом деле отлично настроил проект с помощью Maven.

Это не вызывает особых проблем, поскольку проект работает, но я просто получаю эту ошибку в своем файле jsp в виде красного подчеркивания.

package javax.servlet.jsp does not exist

Я немного погуглил и в итоге получил решение, в котором я добавил jsp-api в свои зависимости. Как только я добавил это в netbeans, мне перестали показывать ошибку, поэтому я построил и запустил его снова, но теперь я получаю ошибку сервера.

The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:95)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:339)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

Немного осмотревшись, я наткнулся на этот вопрос. Я рассмотрел три решения здесь:

  1. Я использую Tomcat 7
  2. Моя версия сервлета web.xml - 2.5 (я думаю)
  3. Я действительно не понимаю этого, но подумал, что это может быть так, поскольку я поставил jsp-api.jar в свои зависимости, и servlet-api.jar тоже есть.

Поэтому я попытался удалить как jsp-api.jar, так и servlet-api.jar из своих зависимостей, чтобы посмотреть, решит ли это проблему. Это просто вернуло меня к моей исходной проблеме.

Это не шоу-стоппер, так как проект работает нормально, а распорки работают. Но это раздражает, и я хотел бы избавиться от этого, поскольку я вижу, что это может вызвать проблемы позже. Так что, если бы кто-то мог придумать что-то, чего я не пробовал, это было бы здорово!

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app metadata-complete="true" version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>New tradesman experience</display-name>
    <description>New tradesman experience</description>

    <!-- listeners -->

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>

    <!-- context params -->
    <context-param>
        <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
        <param-value>/WEB-INF/tiles-tradesman.xml</param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring-tradesman.xml</param-value>
    </context-param>


    <!-- filters -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <!-- filter mappings -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

person noShowP    schedule 27.07.2011    source источник


Ответы (1)


попробуйте изменить объем jsp-api и servlet-api в maven, установите его при условии.

person Zemzela    schedule 27.07.2011
comment
да, это было легко. Спасибо, сработало. Я полагаю, это означает, что он доступен для просмотра в среде IDE, но он не пытается использовать его при создании? (все еще разбираясь с maven) - person noShowP; 27.07.2011
comment
это означает, что при развертывании приложения предоставленные параметры опущены (не развернуты), потому что на сервере приложений они есть в библиотеке lib. - person Zemzela; 27.07.2011
comment
Это означает, что при сборке он будет использовать jar-файлы из репозитория maven. Но при упаковке jar он не копирует эти jar-файлы в web-inf lib. - person isobar; 27.07.2011