Невозможно скомпилировать класс для JSP с основной причиной. Embedded Tomcat 8 (8.5.23)

Я пытаюсь запустить веб-приложение, используя встроенный Tomcat, и упаковать его с помощью плагина maven, но каждый раз пытаюсь увидеть index.jsp.

<%@page import="com.job.hht.WebListener"%>
<%
    boolean launcherEnabled = WebListener.getInstance().isLauncherEnabled();
%>

<% if (launcherEnabled) { %>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=postAuthentication.htm?init=true">
<% } else { %>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=index">
<% } %>

Примечание: я дважды проверяю его на "Hello word", и он ломается так же

Примечание 2: я могу открыть HTML в том же каталоге

Отправьте мне HTTP Status 500 – Internal Server Error

На странице я вижу этот след

HTTP: // локальный: 8080 / тест / index.jsp

Type Exception Report

Message Unable to compile class for JSP

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: Unable to compile class for JSP
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:617)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
Root Cause

java.lang.NullPointerException
    org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:516)
    org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:221)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:601)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
Note The full stack trace of the root cause is available in the server logs.

Полный след сервера (так как я называю java -jar)

java -jar .\target\test-1.1.10-SNAPSHOT-jar-with-dependencies.
jar
feb 20, 2018 1:42:19 PM org.apache.coyote.AbstractProtocol init
INFORMACIËN: Initializing ProtocolHandler ["http-nio-8080"]
feb 20, 2018 1:42:20 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMACIËN: Using a shared selector for servlet write/read
feb 20, 2018 1:42:20 PM org.apache.catalina.core.StandardService startInternal
INFORMACIËN: Starting service [Tomcat]
feb 20, 2018 1:42:20 PM org.apache.catalina.core.StandardEngine startInternal
INFORMACIËN: Starting Servlet Engine: Apache Tomcat/8.5.23
feb 20, 2018 1:42:20 PM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFORMACIËN: No global web.xml found
feb 20, 2018 1:42:22 PM org.apache.catalina.core.ApplicationContext log
INFORMACIËN: No Spring WebApplicationInitializer types detected on classpath
feb 20, 2018 1:42:23 PM org.apache.coyote.AbstractProtocol start
INFORMACIËN: Starting ProtocolHandler ["http-nio-8080"]
feb 20, 2018 1:42:26 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [jsp] in context with path [/test] threw exception [Unable to compile class for JSP] with root cause
java.lang.NullPointerException
        at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:516)
        at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:221)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:601)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)

мой основной код:

public static void main(String[] args) throws ServletException, LifecycleException {

        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);
        tomcat.getHost().setAppBase(".");
        tomcat.addWebapp("/test", ".");
        tomcat.start();
        tomcat.getServer().await();

    }

Я использую maven-assembly-plugin для упаковки приложения

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>make-package</id>
            <phase>package</phase>
            <goals>
                <goal>resources</goal>
            </goals>
            </execution>
        </executions>
        <configuration>
            <encoding>UTF-8</encoding>
        </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    <finalName>test-${project.version}</finalName>
    <archive>
        <manifest>
            <mainClass>com.inditex.wms.asr.main.TomcatLauncher</mainClass>
        </manifest>
    </archive>
</configuration>
<executions>
  <execution>
    <phase>package</phase>
     <goals>
        <goal>single</goal>
     </goals>
  </execution>
</executions>
</plugin>

и я положил веб-приложение в META-INF/resources

<resource>
        <directory>src/main/webapp</directory>
        <targetPath>META-INF/resources</targetPath>
</resource>

У меня есть эти зависимости:

<dependency>
    <groupId>org.opensaml</groupId>
    <artifactId>opensaml</artifactId>
    <version>1.1</version>
</dependency>
<dependency>
    <groupId>xml-security</groupId>
    <artifactId>xmlsec</artifactId>
    <version>1.3.0</version>
</dependency>
    <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc-portlet</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${org.springframework.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
</dependency>
    <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-acl</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-cas-client</artifactId>
    <version>3.0.5.RELEASE</version>
    <exclusions>
        <exclusion>
        <groupId>org.jasig.cas</groupId>
        <artifactId>cas-client-core</artifactId>
            </exclusion>
    </exclusions>
</dependency>
<dependency>
<groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.2.0</version>
</dependency>
    <dependency>
    <groupId>org.graylog2</groupId>
    <artifactId>gelfj</artifactId>
    <version>${gelfj.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper-el</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jsp-api</artifactId>
    <version>${tomcat.version}</version>
</dependency>

1 ответ

Кажется, проблема связана с вашим WebListener учебный класс. Единственное возможное объяснение состоит в том, что WebListener.getInstance() возвращает ноль.

Другие вопросы по тегам