今天在测试lucene 创建索引时,公司的测试环境一直报这个错。not null?? 这个不就是个值传空了吗,so easy! 然而事情并没有这么简单,因为这个报错指向的是我的luceneutil类 ,这个里面经过几代人的测试难道会有问题?? 我一脸懵逼,所以只有一个可能就是从数据库里返回的数据为空了,打印一下list的size看一下 == 1604! ! wtf! 什么鬼! 明明有数据 还会报null的?冷静! 我想了一下,这个项目在我本地上运行是完全没有问题的,但是数据库的表内容不一样,我的本地上只有100多条数据,但是建立个索引别人都10w+的创建都没事我这1000多就崩了? 不可能!但是考虑到这个bug 与数据库的关系还是太大,还是先把这个表弄到我本地上吧! 一切就绪 运行! 报错了!!。。
又喜 又悲啊,看来一定是数据库的问题了 ,难道真的是数据量太大? (这个时候已经掉到坑里了)删到和本地一样只剩100多条,再跑! success 。。 wtf。。。 不可能啊,别人10w+的啊。。。 不可能不可能! 通过check table xx | meg is ok wtf!! 这个时候已经心态炸裂了。。 看了看表,从700多条直接到了1000多条!!! 我突然想起来这个主键当时图省事是自动递增的,我tmd !! 自动递增的表在导入导出的时候就是会出想这种主键信息错乱的问题! 删除700条以上的数据 运行 。 success。。。 我tmd!!!!!! 行吧。。 真是醉了。。 你以为到这里就结束了???然而并没有! 其实现在才刚刚开始。。。
贴一下报错信息
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.lawstar.mvc.Action.doGet(Action.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:610)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: value cannot be null
at org.apache.lucene.document.Field.<init>(Field.java:246)
at org.apache.lucene.document.TextField.<init>(TextField.java:66)
at com.lawstar.wwweb.util.LuceneIKUtil.createIndex(LuceneIKUtil.java:128)
at com.lawstar.wwweb.actions.HlwEfgAction.createIndex(HlwEfgAction.java:210)
... 19 more
这个为什么又报错了呢。。其实前面根本就没又解决问题 , 因为我发现! 我tmd myeclipse没有编译!! 一个上午的文件都还只是 8点多更新的,我这都11点了好吗! 您以为复仇者联盟逆转过去呢! 导入报错的jar包 编译器正常工作,继续运行 失败 error null!
冷静,既然是null 一定是出现了空的数据到底哪出现null了呢! 于是我在代码中加了这么一段。。
既然他前面没遇到null ,后面有个字段出现了null,那么我就要看看到底是谁null了! 运行 - - -
数据库定位到210
!!! game over! 对不起大家,我是个智障 ???