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)
uj5u.com熱心網友回復:
Talk is cheap,show me the code
uj5u.com熱心網友回復:
沒代碼怎么看?uj5u.com熱心網友回復:
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();
}
}
}
uj5u.com熱心網友回復:
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);
}
這是主要的兩個類的代碼
uj5u.com熱心網友回復:
看這個FileListener的55行附近,你這樣貼代碼,一眼看不出來哪是第55行uj5u.com熱心網友回復:
定位在:at com.cdly.test.FileListener.onFileCreate(FileListener.java:55)你就對著FileListener.java line55看吧
但是我尋思著,你這貼出來的好像也沒55行啊。。。
uj5u.com熱心網友回復:
55行就是dboService.addDbos(dbos);uj5u.com熱心網友回復:
使用物件呼叫其方法屬性的時候該物件為null值應該是沒初始化?你自己檢查下吧
uj5u.com熱心網友回復:
謝謝各位大佬了,我在仔細檢查一下uj5u.com熱心網友回復:
問題很簡單。你在 FileListener 里面宣告了 dboService 物件,沒有進行初始化吧,所以是null。寫個建構式,把 dboService 進行賦值(或者說初始化一下)。
uj5u.com熱心網友回復:
observer.addListener(new FileListener()); //設定檔案變化監聽器這一行的代碼,使用的是空引數的構造器。
你在 FileListener 類里面,沒有空引數的構造器,需要自己定義一個空引數的構造器,在里面把 dboService 創建出來。
注意 DbosService 這個類是否是使用spring進行裝配的,如果是的話,不能直接new,會缺少spring的背景關系環境,會拋出其他的空指標例外。
哎~~~
uj5u.com熱心網友回復:
好的謝謝大佬uj5u.com熱心網友回復:
private DbosService dboService;你這個沒注入 . 沒初始化, dboService = null 了
uj5u.com熱心網友回復:
那我具體應該怎么操作呢uj5u.com熱心網友回復:
dboService沒初始化吧uj5u.com熱心網友回復:
private DbosService dboService; 沒有初始化最簡單的方法就是上面加個@Autowired標簽 或者 DbosService dboService = new DbosService()
uj5u.com熱心網友回復:
發現你dboService 的get set 方法都沒寫。或者在類構造中獲取引數 dboService
uj5u.com熱心網友回復:
大佬我按你的這個方法試了還是不行轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/31129.html
標籤:Java EE
