2016-10-12 10 views
0

Spring Frameworkを使用したMVCアプリケーションの例を実行しようとしています。
Java(XMLなし)のみを使用したいと考えています。
例を単純化したので、ビューリゾルバは役に立たないことにも注意してください。

これは、プロジェクトの構造である:Spring MVCでのNullPointerExceptionの例

これはのpom.xmlファイルです:

のWebConfig

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 


    <groupId>it.unipi.ing.ciampi</groupId> 
    <artifactId>TestMVCSpring</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>TestMVCSpring Maven Webapp</name> 
    <url>http://maven.apache.org</url> 


    <dependencies> 

    <!-- SERVLETS + JSP + JSTL --> 
    <!-- Dependencies for Servlets --> 
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- Dependencies for Jstl --> 
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- Dependencies for Servlet-Jsp api --> 
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>javax.servlet.jsp-api</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <!-- END SERVLETS + JSP + JSTL --> 

    <!-- SPRING FRAMEWORK --> 
    <!-- Dependencies for Spring Core --> 
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 
    <!-- Dependencies for Spring Web MVC --> 
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 
    <!-- END SPRING FRAMEWORK --> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    </dependencies> 


    <build> 
    <plugins> 
     <!-- Configuration of the maven-compiler-plugins to use Java 1.8 --> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.2</version> 
     <configuration> 
      <verbose>true</verbose> 
      <source>1.8</source> 
      <target>1.8</target> 
      <showWarnings>true</showWarnings> 
     </configuration> 
     </plugin> 
     <!-- Definition of the tomcat7-maven-plugin --> 
     <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
      <path>/</path> 
      <contextReloadable>true</contextReloadable> 
     </configuration> 
     </plugin> 
    </plugins> 
    <finalName>TestMVCSpring</finalName> 
    </build> 


    <properties> 
    <failOnMissingWebXml>false</failOnMissingWebXml> 
    </properties> 

</project> 

これらが実装されたクラスですrunコマンド:


WebAppInitializer

package it.unipi.ing.ciampi.testmvcspring.configuration; 

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 



public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[] { WebConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

} 


TestController

package it.unipi.ing.ciampi.testmvcspring.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 



@Controller 
@RequestMapping("/") 
public class TestControler { 
    @RequestMapping(method=RequestMethod.GET) 
    @ResponseBody 
    public String home() { 
     return "test"; 
    } 
} 



は、その後、私はMVNクリーンついにMVN tomcat7、installコマンドを使用します。私は私のlocalhostを訪問しようとすると、
しかし:8080のアドレスを、私はこのエラーを持っている:

GRAVE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:31) 
    at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) 
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    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:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

ott 12, 2016 11:00:32 AM org.apache.catalina.core.StandardWrapperValve invoke 
GRAVE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:31) 
    at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) 
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    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:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

ott 12, 2016 11:00:32 AM org.springframework.web.servlet.PageNotFound noHandlerFound 



UPDATE
問題はディスパッチャがを聞いていたパターンだったようです。ところで、私はそれについて混乱しています。

最初にMavenプロジェクトを作成したので、WEB-INFフォルダはsrc-> main-> webapp-> WEB-INFにありました。
次に、Webダイナミックモジュールのバージョンを3.0に変更するプロジェクトファセットを更新しました。 Eclipseに新しいフォルダ、Web Contentが追加されました。そこには別のWEB-INFフォルダがあります。
webappフォルダを削除して、localhost:8080 /というアドレスで、ディスパッチャがアクティブになりました。

正しい解決策ですか?ディスパッチャがリッスンするパスはどこで設定できますか?

+0

私はあなたのコードを実行し、それは正常に動作します。しかし、私はMavenを使用しないので、おそらく問題はあなたのpomに含まれるライブラリにあります。最初の3つのインポートを削除しようとしましたか?彼らは必要ではありません。 – amicoderozer

+0

最初の依存関係が必要です....したがって、エラーはすでにここにあります... – PenguinEngineer

+0

コードをどのように実行したか教えてください。 – PenguinEngineer

答えて

0

あなたは問題を完全に解決できないようにjspページを提供していません。しかし、JavaSE-1.8でJREシステムライブラリを使用すると間違っているようです。それをJDK 1.8に変更してから、もう一度コンパイルしてください。

私はポストCreating Spring MVC Project in Eclipse Using Maven

・ホープ、このヘルプでそれを見つけました!

+0

@ResponseBody Annotationを使用しているため、page.jspは役に立たないです。私もviewResolverをコメントしようとするが、私は同じエラーがある – PenguinEngineer

+0

私は問題がJavaに関連していないと思う、それは正常にコンパイル – PenguinEngineer

関連する問題