【问题标题】:NullPointer in codename One代号一中的 NullPointer
【发布时间】:2017-09-27 09:34:49
【问题描述】:

我的插件代号一的代码有一些问题 它告诉我有一个空指针异常,但相同的代码在其他一些计算机上工作,所以我真的不知道问题到底出在哪里

    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 - 在第 2 行解析 JSON 令牌时,键值预期为空:2 列:72 缓冲区:e1elxde-exe-dlde1ell [EDT] 0:0:0,2 - 在行解析 JSON 令牌时,键值预期为空:2 列:85 缓冲区:e1elxde-exe-dlde1ell0elldd [EDT] 0:0:0,2 - 在第 3 列解析 JSON 令牌时,键值预期为真:2 缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 在第 3 列解析 JSON 令牌时,键值预期为真:3 缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 在行解析 JSON 令牌时,键值预期为空:3 列:7 缓冲区:e1elxde-exe-dlde1ell0elldd1l [EDT] 0:0:0,2 - 在第 3 行解析 JSON 令牌时,键值应为真:第 3 列:10 缓冲区:e1elxde-exe-dlde1ell0elldd1lef [EDT] 0:0:0,2 - 在第 3 列解析 JSON 令牌时,键值预期为空: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)

【问题讨论】:

    标签: php json codenameone


    【解决方案1】:

    正如堆栈跟踪所说,getListEtudiant 在第 80 行有一个空指针异常。由于我无法告诉第 80 行并且不知道输入值是什么,因此我无法给您更准确的答案,但这里是通用的。

    在调试器的第 80 行中放置一个断点,当您遇到该断点时,使用检查变量工具检查各种元素并查看该行失败的原因。

    同时在模拟器中打开网络监控工具并检查请求/响应调用,这有助于了解哪里出了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2014-01-31
      • 2011-09-11
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多