1. 程式人生 > >Spring boot 報錯java.lang.NullPointerException: null

Spring boot 報錯java.lang.NullPointerException: null

新學習  Spring boot  

按照網上資料搭建(相容jsp),成功啟動,正常遇見 helloworld 

但頁面一直不讓用EL表示式,報錯如下:

java.lang.NullPointerException: null
	at javax.el.CompositeELResolver.add(CompositeELResolver.java:117) ~[javaee-api-8.0.jar:na]
	at org.apache.jasper.el.ELContextImpl.<clinit>(ELContextImpl.java:87) ~[tomcat-embed-jasper-8.5.23.jar:8.5.23]
	at org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1617) ~[tomcat-embed-jasper-8.5.23.jar:8.5.23]
	at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:750) ~[tomcat-embed-jasper-8.5.23.jar:8.5.23]
	at org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:959) ~[tomcat-embed-jasper-8.5.23.jar:8.5.23]
.....

以為JSP相容有問題,又經過一系列調整,報的異常換了幾換,還是不行。調整方向有誤

終發現問題出在pom.xml 引入了不應該引入的

<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
			<version>8.0</version>
		</dependency>

我當初引入這個的原因是在建立maven 工程時報錯,於是為了讓它不報錯而新增的,包括web.xml的修改(此檔案在spring boot中無用)

去掉即可,至於原因個人猜是 javaee-api 重寫了springboot父類的web.xml.  

原因純屬個人臆測,有高手明白願聞其詳,此文章留給自己備查。

另外還有個發現

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath />
	</parent>

中1.5.9版本和1.33版本的SpringBootServletInitializer所在包不同,但並不影響使用,改下即可。