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所在包不同,但并不影响使用,改下即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot工程中,NullPointerException通常是由于未正确初始化对象或变量而引起的。以下是一些可能导致NullPointerException的原因和解决方法: 1.对象未正确初始化或注入:请确保您的对象已正确初始化或注入,并且没有在使用之前被设置为null。 2.方法返回null:请确保您的方法在任何情况下都不会返回null。如果方法可能返回null,则应该在调用该方法之前检查返回值是否为null。 3.数组未正确初始化:请确保您的数组已正确初始化,并且没有在使用之前被设置为null。 4.静态变量未正确初始化:请确保您的静态变量已正确初始化,并且没有在使用之前被设置为null。 5.空指针异常可能是由于数据层返回了空值,导致在service层或controller层中使用该值时出现了异常。请检查您的数据层是否正确返回了值,并确保在使用该值之前进行了非空检查。 以下是一些可能有用的代码示例: ```java // 确保对象已正确初始化或注入 @Autowired private MyService myService; // 确保方法不会返回null public String getName() { return Objects.requireNonNull(name, "Name must not be null"); } // 确保数组已正确初始化 int[] arr = new int[10]; // 确保静态变量已正确初始化 private static final MyObject myObject = new MyObject(); // 确保在使用值之前进行非空检查 if (dataSectionService != null) { // 使用dataSectionService的返回值 } else { // 处理dataSectionService为null的情况 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值