【问题标题】:Very strange null pointer issue非常奇怪的空指针问题
【发布时间】:2014-11-01 22:54:20
【问题描述】:

希望有人可以帮助我解决我遇到的一个非常奇怪的问题。

在下面的代码中,我试图打印出请求中传递的数字。它是一个称为数字的字符串。

String number = request.getParameter("number");

^ 字符串

out.print(number);

^ 打印编号

目前由于空指针异常而失败,但是当我打印出 number.length() 时,它会打印长度。

堆栈跟踪还说空指针出现在这一行

JSONObject JSONOBJ = new JSONObject(APIResponse.Response);

谁能解释这是怎么回事?

谢谢!

<%
if (request.getParameter("number") != null)
{

    String number = request.getParameter("number");
    if (number.matches("^[0-9]+"))
    {
%>

        <%
            ApiRequest APIRequest = new ApiRequest(
                            "/broadband/availability/" + number, "GET", null);

                    /*
                    COULD ALSO PASS POSTCODE BUT ONLY USING CLI FOR NOW
                     */

                    ApiClient APIClient = new ApiClient();
                    api.ApiResponse APIResponse = APIClient.send(APIRequest);

                    JSONObject JSONOBJ = new JSONObject(APIResponse.Response);

                    JSONArray JSONARR = JSONOBJ.getJSONArray("products");
        %>

                Services for 
                <%
                out.print(number);
            %>

【问题讨论】:

  • 什么是out,它在哪里设置? (另外,你是否使用了一些标签中没有提到的框架?我不知道那些&lt;% 的东西是什么。)
  • 很抱歉应该提到这是一个 JSP。 之外是 HTML。 Out是浏览器。
  • 你试过修剪String吗? String number = request.getParameter("number"); number = (number != null) ? number.trim() : "0";
  • 您确定您的APIResponse 不为空吗?你能检查一下吗?
  • 发布堆栈跟踪,并显示相关的行号。根据您的描述,这些 NPE 的确切来源尚不清楚。

标签: java jsp variables pointers null


【解决方案1】:

如果你真的在这条线上获得了 NPE:

  JSONObject JSONOBJ = new JSONObject(APIResponse.Response);

那么唯一的解释是APIResponse(糟糕!!!)是null。这意味着

  APIClient.send(APIRequest);

(讨厌两次!!)正在返回 null。如果不查看这些 APIxxxx 类的源代码和/或 javadocs,就无法确定是什么原因。


这是您为准确诊断提供的具有足够特异性的唯一证据。

您还提到在打印数字时获得 NPE。但我怀疑这不是真正正在发生的事情。 (首先,如果 NPE 出现在您它出现的那一行,那么它不会在该点打印一个数字。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2011-03-09
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多