java - 使用 response.sendRedirect() 时出现空指针

标签 java maven jsp jboss

我正在使用 maven 将这个应用程序从 weblogic 移植到 Jboss,我现在在第二页上看到这条消息。知道我可能会遗漏什么吗?

它不适用于我创建的任何 JSP 或我调用它的任何 Controller 。我试图创建 PrintWriter 的实例并输出字符串。问题在于通过此函数编译任何 jsp。此外,index.jsp 工作正常。

server.log 中的堆栈跟踪:

ESC[0mESC[31m09:51:38,753 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/cashvariance].[jsp]] (http-/0.0.0.0:8180-1) JBWEB
000236: Servlet.service() for servlet jsp threw exception: java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:157) [rt.jar:1.8.0_101]
        at java.io.PrintWriter.newLine(PrintWriter.java:480) [rt.jar:1.8.0_101]
        at java.io.PrintWriter.println(PrintWriter.java:629) [rt.jar:1.8.0_101]
        at java.io.PrintWriter.println(PrintWriter.java:740) [rt.jar:1.8.0_101]
        at org.apache.jasper.compiler.ServletWriter.printil(ServletWriter.java:130) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Generator.genPreamblePackage(Generator.java:481) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Generator.generatePreamble(Generator.java:584) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Generator.generate(Generator.java:3462) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:359) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:326) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:606) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:308) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:242) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar:1.0.2.Final-redhat-2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_101]

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cashvariance</groupId>
    <artifactId>cashvariance</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <resources>
            <resource>
                <directory>WebContent</directory>
            </resource>
        </resources>
        <finalName>cashvariance</finalName>
        <sourceDirectory>src</sourceDirectory>

        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.unboundid/unboundid-ldapsdk -->
        <dependency>
            <groupId>com.unboundid</groupId>
            <artifactId>unboundid-ldapsdk</artifactId>
            <version>4.0.0</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec -->
        <dependency>
            <groupId>org.apache.taglibs</groupId>
            <artifactId>taglibs-standard-spec</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>jasper</artifactId>
            <version>6.0.32</version>
        </dependency>
    </dependencies>
</project>

网络.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>cashvariance</display-name>

  <servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>pageCheckSeconds</param-name>
        <param-value>-1</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>keepgenerated</param-name>
        <param-value>true</param-value>
    </init-param> 
    <load-on-startup>0</load-on-startup>
  </servlet>

  <servlet>
        <servlet-name>HelloWorldServlet</servlet-name>
        <servlet-class>HelloWorldServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>CashVarianceController</servlet-name>     
        <servlet-class>cashvariance.controller.CashVarianceServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>DropDownController</servlet-name>     
        <servlet-class>cashvariance.controller.CashVarianceServletForDropDown</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ManageRPAController</servlet-name>
        <servlet-class>cashvariance.controller.ManageRPAServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>AddRPAController</servlet-name>
        <servlet-class>cashvariance.controller.AddRPAServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>UpdateDeleteController</servlet-name>
        <servlet-class>cashvariance.controller.UpdateDeleteServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>DataDumpController</servlet-name>
        <servlet-class>cashvariance.controller.DataDumpServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Main</servlet-name>
        <servlet-class>cashvariance.controller.LoginController</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>SnoopServlet</servlet-name>
        <servlet-class>SnoopServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>logon</servlet-name>
        <servlet-class>demo.log4j.servlet.LogonServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ForgotPassword</servlet-name>
        <servlet-class>demo.log4j.servlet.ForgotPasswordServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Register</servlet-name>
        <servlet-class>demo.log4j.servlet.RegisterServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>GetComments</servlet-name>
        <servlet-class>demo.log4j.servlet.GetCommentsServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>log4jsetup</servlet-name>
        <servlet-class>demo.log4j.servlet.Log4jSetupServlet</servlet-class>
        <init-param>
            <param-name>props</param-name>
            <param-value>log4j.properties</param-value>
        </init-param>
        <init-param>
            <param-name>watch</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>userDB</param-name>
            <param-value>userDB.properties</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>/HelloWorldServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>CashVarianceController</servlet-name>
        <url-pattern>/CashVarianceController</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DropDownController</servlet-name>
        <url-pattern>/DropDownController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ManageRPAController</servlet-name>
        <url-pattern>/ManageRPAController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>AddRPAController</servlet-name>
        <url-pattern>/AddRPAController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>UpdateDeleteController</servlet-name>
        <url-pattern>/UpdateDeleteController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>DataDumpController</servlet-name>
        <url-pattern>/DataDumpController</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Main</servlet-name>
        <url-pattern>/Main</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>SnoopServlet</servlet-name>
        <url-pattern>/SnoopServlet</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>logon</servlet-name>
        <url-pattern>/log4j_demo/logon</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>ForgotPassword</servlet-name>
        <url-pattern>/log4j_demo/ForgotPassword</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Register</servlet-name>
        <url-pattern>/log4j_demo/Register</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>GetComments</servlet-name>
        <url-pattern>/log4j_demo/GetComments</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
        <error-code>404</error-code>
        <location>/jsp/error.jsp</location>
    </error-page>
<!--   <welcome-file-list> -->
<!--     <welcome-file>index.html</welcome-file> -->
<!--     <welcome-file>index.htm</welcome-file> -->
<!--     <welcome-file>index.jsp</welcome-file> -->
<!--     <welcome-file>default.html</welcome-file> -->
<!--     <welcome-file>default.htm</welcome-file> -->
<!--     <welcome-file>default.jsp</welcome-file> -->
<!--   </welcome-file-list> -->
</web-app>

standalone.xml 中 jsp 的子系统

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
            <configuration>
                <jsp-configuration development="true" java-encoding="ISO8859_1"/>
            </configuration>
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <alias name="example.com"/>
            </virtual-server>
        </subsystem>

最佳答案

我不使用 JBoss,所以我无法告诉您在哪里解决这个问题,但 StackTrace 清楚地表明系统属性 line.separator 未设置或无法正确检索。

来自@davis的评论

I've set the property inside the .properties file that I have and it worked!

关于java - 使用 response.sendRedirect() 时出现空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658081/

相关文章:

java - 使用公司内部存储库构建 Maven 项目

java - 如何从外部jsp调用内部类方法或变量?

java - Spring MVC 在 WAR 和 JAR 文件中使用 jsp 文件

java - 用java编写二十一点和纸牌程序时遇到问题

java - 包注释有什么意义?

java - 如何在javafx中的同一窗口中打开新页面

maven - 执行 org.mule.munit.tools 时缺少所需的类 : org/codehaus/jackson/annotate/JsonClass

java - 是否可以在带有 Hibernate 和 AspectJ 的 Java 项目中使用 SBT?

java - 为什么这里是 "Duplicate local variable messages"?

java - 为 vtd-xml 重新构建 jar 文件时,build.bat 会抛出错误,例如 "java_cup\parser.java:695: package java_cup.runtime does not exist"