2015-12-14 32 views
1

我想構建我的Windows Phone手機應用程序,但代碼名稱一個生成服務器會給我構建錯誤。這裏的錯誤日誌: https://s3.amazonaws.com/codenameone-build-response/7e34c6a4-f939-4044-8ab3-afbad45e7447-1450100218601-error.txtcodename一個應用程序不會爲Windows生成

當我建立它的Android,一切都很好。

當我運行從NetBeans中我的應用程序,一切似乎也沒關係,雖然控制檯顯示下列句子紅:

  1. 編譯迫使符合所支持的API /特性最大的設備兼容性。這允許更小的代碼大小和更寬的設備支持

  2. 注意:C:\ Users \ Andrius \ Documents \ NetBeansProjects \ dogspuppiesforsaleApp \ src \ userclasses \ StateMachine.java使用或覆蓋棄用的API。 注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 注意:C:\ Users \ Andrius \ Documents \ NetBeansProjects \ dogspuppiesforsaleApp \ src \ userclasses \ StateMachine.java使用未經檢查或不安全的操作。 注意:使用-Xlint重新編譯:取消選中以獲取詳細信息。

  3. 注意:C:\ Users \ Andrius \ Documents \ NetBeansProjects \ dogspuppiesforsaleApp \ src \ userclasses \ StateMachine.java使用或覆蓋棄用的API。 注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 注意:C:\ Users \ Andrius \ Documents \ NetBeansProjects \ dogspuppiesforsaleApp \ src \ userclasses \ StateMachine.java使用未經檢查或不安全的操作。 注意:使用-Xlint重新編譯:取消選中以獲取詳細信息。

  4. Grd 14,2015 3:44:25 PM java.util.prefs.WindowsPreferences 警告:無法在根0x80000002處打開/創建首選項根節點Software \ JavaSoft \ Prefs。 Windows RegCreateKeyEx(...)返回錯誤代碼5.

其中一個代號名稱管理員告訴我,Windows手機有一個3D數組問題。我在我的應用程序中使用JSON數據,所以也許問題在這裏?

protected void setCategories() { 
     JParser parser = new JParser("http://www.url.com/mobileApp/categories.php"); 
     this.resultArray = parser.returnArray(); 
     for (int i = 0; i < this.resultArray.length(); i++) { 
      try { 
       JSONObject jsonObject = this.resultArray.getJSONObject(i); 
       categories.add(new Category(jsonObject.getInt("id"), jsonObject.getString("title"))); 
      } catch (JSONException ex) { 
       Dialog.show("Error", ex.toString(), "Ok", null); 
      } 
     } 
} 

JParser類:

public class JParser { 
    public ConnectionRequest r; 
    public JSONArray jsonArray; 
    public String url; 

    public JParser(String url) { 
     this.jsonArray = new JSONArray(); 
     this.url = url; 
     this.r = new ConnectionRequest() { 
      @Override 
      protected void readResponse(InputStream input) throws IOException { 
       JSONParser p = new JSONParser(); 
       Hashtable h = p.parse(new InputStreamReader(input)); 

       try { 
        String hashString = h.toString(); 
        JSONObject entries = new JSONObject(hashString); 
        JSONArray rez = new JSONArray(); 
        rez = entries.getJSONArray("root"); //musu JSON objektas visada prasides su root 
        setArray(rez); 
       } catch (JSONException ex) { 
        System.out.println(ex); 
        Dialog.show("Error", ex.toString(), "Ok", null); 
       } 
      } 
     }; 

     this.r.setUrl(this.url); 
     this.r.setPost(false); //nieko nepostinam, tik pasiimam parsinti 
     InfiniteProgress prog = new InfiniteProgress(); //nesibaigiantis procesas 
     Dialog dlg = prog.showInifiniteBlocking(); //rodom dialoga su loading 
     this.r.setDisposeOnCompletion(dlg); //kai baigia krauti, isjungiam 
     NetworkManager.getInstance().addToQueueAndWait(this.r); //pridedam i eile 
     this.r.getResponseData(); //gaunam duomenis 
    } 

    public void setArray(JSONArray a) { 
     this.jsonArray = a; 
    } 

    public JSONArray returnArray() { 
     return this.jsonArray; 
    } 
} 
+0

您更改了本地工作正常的類路徑,併爲JSON庫所在的Android工作。你可以試試這個:https://github.com/shannah/CN1JSON,注意這個代碼在iOS上也會失敗。 –

+0

不太明白...所以我必須刪除我的JSON庫並使用你的(https://github.com/shannah/CN1JSON)?它會造成什麼不同? –

+1

服務器上的翻譯服務編譯爲本地環境。 Android原生SDK已經包含了org.json包,所以這個「意外」工作,但是我們的構建服務器卻無視您添加到類路徑中的庫的存在。 cn1lib是一種特殊的結構,可以避免這些並提供本地訪問。使用不同的包可避免衝突在Android上,包已經存在。 –

回答

1

我真的不能告訴你哪裏出錯是來自但是你可以重寫你的代碼來讀取readResponse()過程JSON響應響應在postResponse()和無JsonArray() ,請嘗試以下方法:

public class JParser { 

public ConnectionRequest r; 
public String url; 

public JParser(String url) { 
    this.url = url; 

    InfiniteProgress prog = new InfiniteProgress(); 
    Dialog dlg = prog.showInifiniteBlocking(); 
    try { 
     this.r = new ConnectionRequest() { 
      Map response = null; 

      @Override 
      protected void readResponse(InputStream input) throws IOException { 
       JSONParser parser = new JSONParser(); 
       response = parser.parseJSON(new InputStreamReader(input)); 
      } 

      @Override 
      protected void postResponse() { 
       List responseList = (List) response.get("root"); 
       if (responseList != null) { 
        // save or use your response as a list here, for exampple: 
        System.out.println(responseList.toString()); // output for debug 

        // Or even loop through the result: 
        for (Object resList : responseList) { 
         Map tempHash = (Map) resList; 
         String result = tempHash.get("anElementInsideRoot").toString(); 
         System.out.println(result); 
        } 
       } else { 
        //It returns null value 
       } 
      } 
     }; 

     this.r.setUrl(this.url); 
     this.r.setPost(false); 
     NetworkManager.getInstance().addToQueueAndWait(this.r); 
    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
     Dialog.show("Error", ex.getMessage(), "Ok", null); 
    } finally { 
     dlg.dispose(); 
    } 
} 
} 

也刪除this.r.getResponseData();這是不需要的。

相關問題