cas客户端创建Filter出现空指针异常,请问有谁知道如何解决吗
代码如下:
@Bean
public Cas20ProxyReceivingTicketValidationFilter getCas20ProxyReceivingTicketValidationFilter() {
Cas20ProxyReceivingTicketValidationFilter casFilter = new Cas20ProxyReceivingTicketValidationFilter();
casFilter.setService("http://192.168.10.117:8222");
casFilter.setProxyReceptorUrl("/proxy/receptor");
Cas20ProxyTicketValidator ticketValidator = new Cas20ProxyTicketValidator(casProperties.getCasServerUrl());
ticketValidator.setAcceptAnyProxy(true);
ticketValidator.setProxyCallbackUrl("/proxy/receptor");
casFilter.setTicketValidator(ticketValidator);
return casFilter;
}
错误内容如下:
18:00:44.813 [restartedMain] ERROR o.a.c.c.C.[.[.[/] - [log,175] - Exception starting filter [getCas20ProxyReceivingTicketValidationFilter]
java.lang.NullPointerException: null
at org.jasig.cas.client.util.ReflectUtils.newInstance(ReflectUtils.java:78)
at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.createNewTicketValidator(Cas20ProxyReceivingTicketValidationFilter.java:144)
at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.getTicketValidator(Cas20ProxyReceivingTicketValidationFilter.java:178)
at org.jasig.cas.client.validation.AbstractTicketValidationFilter.initInternal(AbstractTicketValidationFilter.java:141)
at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.initInternal(Cas20ProxyReceivingTicketValidationFilter.java:123)
at org.jasig.cas.client.util.AbstractCasFilter.init(AbstractCasFilter.java:74)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:272)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:106)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4613)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5256)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123)
根据异常信息,报错原因是在使用ReflectUtils
的newInstance()
方法时出现了空指针异常。
可能原因有以下几种:
ReflectUtils
类没有被成功加载:检查是否在项目依赖中正确引入了org.jasig.cas.client.util
包。
Cas20ProxyReceivingTicketValidationFilter
类没有被成功加载:检查是否在项目依赖中正确引入了org.jasig.cas.client.validation
包,同时也要确保与该类有关的Java文件存在并且能够编译。
casProperties
对象为空:这个对象应该是通过Spring的依赖注入机制获得的,在本段代码中并未给出该对象的创建方法。检查是否正确配置了Spring的依赖注入机制,并在程序启动时成功创建了casProperties
对象。
在Cas20ProxyReceivingTicketValidationFilter
对象的构造函数中使用了其他对象但未初始化,导致NPE异常:请仔细检查代码中所有有关的对象调用,确保它们都已经初始化并且不为空。
综上所述,排查方法可以从这四个方面入手,逐个排查,找出问题所在。
不知道你这个问题是否已经解决, 如果还没有解决的话:抱歉,根据提供的参考资料和问题描述,无法确定问题发生的根本原因。建议提供更详细的错误信息和相关代码,以便更好地帮助解决问题。