多线程空指针异常,有没有大佬知道怎么破

指尖下的技术 2020-07-17 02:14:39
Exception in thread "Thread-0" java.lang.NullPointerException
at com.cdly.test.FileListener.onFileCreate(FileListener.java:55)
at org.apache.commons.io.monitor.FileAlterationObserver.doCreate(FileAlterationObserver.java:379)
at org.apache.commons.io.monitor.FileAlterationObserver.checkAndNotify(FileAlterationObserver.java:330)
at org.apache.commons.io.monitor.FileAlterationObserver.checkAndNotify(FileAlterationObserver.java:304)
at org.apache.commons.io.monitor.FileAlterationMonitor.run(FileAlterationMonitor.java:182)
at java.lang.Thread.run(Unknown Source)
...全文
7927 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
指尖下的技术 2020-07-30
  • 打赏
  • 举报
回复
引用 13 楼 改丨浅忆 的回复:
private DbosService dboService; 你这个没注入 . 没初始化, dboService = null 了
大佬我按你的这个方法试了还是不行
qq_39936465 2020-07-30
  • 打赏
  • 举报
回复
引用 14 楼 指尖下的技术 的回复:
那我具体应该怎么操作呢
发现你dboService 的get set 方法都没写。或者在类构造中获取参数 dboService
  • 打赏
  • 举报
回复
private DbosService dboService; 没有初始化 最简单的方法就是上面加个@Autowired标签 或者 DbosService dboService = new DbosService()
javageekcoder 2020-07-29
  • 打赏
  • 举报
回复
dboService没初始化吧
改丨浅忆 2020-07-20
  • 打赏
  • 举报
回复
private DbosService dboService; 你这个没注入 . 没初始化, dboService = null 了
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
好的谢谢大佬
冰思雨 2020-07-20
  • 打赏
  • 举报
回复
observer.addListener(new FileListener()); //设置文件变化监听器 这一行的代码,使用的是空参数的构造器。 你在 FileListener 类里面,没有空参数的构造器,需要自己定义一个空参数的构造器,在里面把 dboService 创建出来。 注意 DbosService 这个类是否是使用spring进行装配的,如果是的话,不能直接new,会缺少spring的上下文环境,会抛出其他的空指针异常。 哎~~~
冰思雨 2020-07-20
  • 打赏
  • 举报
回复
问题很简单。你在 FileListener 里面声明了 dboService 对象,没有进行初始化吧,所以是null。 写个构造函数,把 dboService 进行赋值(或者说初始化一下)。
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
谢谢各位大佬了,我在仔细检查一下
  • 打赏
  • 举报
回复
引用 7 楼 指尖下的技术 的回复:
55行就是dboService.addDbos(dbos);
使用对象调用其方法属性的时候该对象为null值应该是没初始化?你自己检查下吧
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
55行就是dboService.addDbos(dbos);
  • 打赏
  • 举报
回复
定位在:at com.cdly.test.FileListener.onFileCreate(FileListener.java:55) 你就对着FileListener.java line55看吧 但是我寻思着,你这贴出来的好像也没55行啊。。。
  • 打赏
  • 举报
回复
看这个FileListener的55行附近,你这样贴代码,一眼看不出来哪是第55行
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
public class FileListener extends FileAlterationListenerAdaptor { private DbosService dboService; public void onFileCreate(File file) { String fileName = file.getName(); String[] str1 = fileName.split("_"); StringBuffer sb=new StringBuffer(); String serialNum = ""; String dnOrUp = ""; String communTime = ""; String imsi = ""; String imei = ""; String tmsi = ""; String fileLen = String.valueOf(file.length()); String filePath = file.getPath(); for(int i=0;i<str1.length;i++) { sb.append(str1[i]+" "); } sb.deleteCharAt(sb.length()-1); String str3=sb.toString(); String str2[] = str3.split(" "); for(int j=0;j<str2.length;j++) { serialNum=str2[0]; dnOrUp=str2[1]; communTime=str2[2]; imsi=str2[3]; imei=str2[4]; tmsi=str2[5]; } Dbos dbos = new Dbos(); dbos.setSerialNum(serialNum); dbos.setDnOrUp(dnOrUp); dbos.setCommunTime(communTime); dbos.setImsi(imsi); dbos.setImei(imei); dbos.setTmsi(tmsi); dbos.setFileLen(fileLen); dbos.setFilePath(filePath); System.out.println(dbos.getSerialNum()); dboService.addDbos(dbos); } 这是主要的两个类的代码
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
public class Test { public static void main(String[] args) throws Exception { // 监控目录 String rootDir = "D:\\baidu"; // 轮询间隔 5 秒 Integer time = 3; long interval = TimeUnit.SECONDS.toMillis(time); // 创建一个文件观察器用于处理文件的格式, // FileFilterUtils.suffixFileFilter(".txt") FileAlterationObserver _observer = new FileAlterationObserver( rootDir, FileFilterUtils.and( FileFilterUtils.fileFileFilter()), //过滤文件格式 null); FileAlterationObserver observer = new FileAlterationObserver(rootDir); observer.addListener(new FileListener()); //设置文件变化监听器 //创建文件变化监听器 FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); // 开始监控 try { monitor.start(); } catch (Exception e) { e.printStackTrace(); } } }
指尖下的技术 2020-07-20
  • 打赏
  • 举报
回复
那我具体应该怎么操作呢
  • 打赏
  • 举报
回复
没代码怎么看?
胖到没有朋友 2020-07-17
  • 打赏
  • 举报
回复
Talk is cheap,show me the code

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧