我的代码使用插件代号为1时遇到了一些问题 它告诉我有一个nullpointer异常,但相同的代码在其他一些计算机上工作,所以我真的不知道问题究竟在哪里
Form hi = new Form("Hi World");
SpanLabel sp = new SpanLabel();
hi.add(sp);
hi.show();
ConnectionRequest con = new ConnectionRequest();
con.setUrl("http://localhost/pidev2017/select.php");
con.addResponseListener(new ActionListener<NetworkEvent>() {
@Override
public void actionPerformed(NetworkEvent evt) {
System.out.println(getListEtudiant(new String(con.getResponseData())));
sp.setText(getListEtudiant(new String(con.getResponseData())) + "");
hi.refreshTheme();
}
});
NetworkManager.getInstance().addToQueue(con);
}
public ArrayList<Etudiant> getListEtudiant(String json) {
ArrayList<Etudiant> listEtudiants = new ArrayList<>();
try {
JSONParser j = new JSONParser();
Map<String, Object> etudiants = j.parseJSON(new CharArrayReader(json.toCharArray()));
System.out.println();
List<Map<String, Object>> list = (List<Map<String, Object>>) etudiants.get("etudiant");
for (Map<String, Object> obj : list) {
Etudiant e = new Etudiant();
e.setAge(Integer.parseInt(obj.get("age").toString()));
e.setCin(obj.get("cin").toString());
e.setNom(obj.get("nom").toString());
listEtudiants.add(e);
}
} catch (IOException ex) {
}
return listEtudiants;
}
这是我得到的错误
显示java.lang.NullPointerException [EDT] 0:0:0,2 - 解析行中的JSON令牌时键值的预期null:2列:72缓冲区:e1elxde-exe-dlde1ell [EDT] 0:0:0,2 - 解析行中的JSON标记时键值的预期null:2列:85缓冲区:e1elxde-exe-dlde1ell0elldd [EDT] 0:0:0,2 - 在行解析JSON标记时,键值的预期为真:3列:2缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 在行解析JSON标记时,键值的预期为真:3列:3缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 解析行中的JSON标记时键值的预期null:3列:7缓冲区:e1elxde-exe-dlde1ell0elldd1l [EDT] 0:0:0,2 - 在行解析JSON标记时,键值预期为真:3列:10缓冲区:e1elxde-exe-dlde1ell0elldd1lef [EDT] 0:0:0,2 - 解析行中的JSON令牌时键值的预期值为null:3列:34缓冲区:e1elxde-exe-dlde1ell0elldd1leflf57900l
at com.mycompany.myapp.MyApplication.getListEtudiant(MyApplication.java:80)
at com.mycompany.myapp.MyApplication$1.actionPerformed(MyApplication.java:59)
at com.mycompany.myapp.MyApplication$1.actionPerformed(MyApplication.java:55)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.access$100(EventDispatcher.java:45)
at com.codename1.ui.util.EventDispatcher$CallbackClass.run(EventDispatcher.java:95)
at com.codename1.ui.Display.processSerialCalls(Display.java:1152)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1096)
at com.codename1.ui.Display.mainEDTLoop(Display.java:997)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
答案 0 :(得分:0)
由于堆栈跟踪显示getListEtudiant
在第80行有一个空指针异常。由于我不能告诉第80行并且不知道输入值是什么,我可以&#t; t给你一个更准确的答案,但这里是通用答案。
当您点击该断点时,在第80行的调试器中放置一个断点,使用inspect variables工具检查各个元素并查看该行失败的原因。
同时在模拟器中打开网络监视工具并检查请求/响应调用,这有助于了解出现问题的地方。