J2ME build fails with can't find enclosing method

54 views
Skip to first unread message

luane...@gmail.com

unread,
Jun 3, 2014, 7:07:45 AM6/3/14
to codenameone...@googlegroups.com
IDE: Eclipse

I am trying to generate a build for J2Me app. I keep getting this:

Warning: userclasses.StateMachine$5: can't find enclosing method 'java.util.ArrayList getMessages()' in class userclasses.StateMachine
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class com.siemens.mp.game.Light
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class com.motorola.phonebook.PhoneBookRecord
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class com.nokia.mid.ui.FullCanvas
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class net.rim.device.api.system.Application
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class com.mot.iden.util.Base64
Note: com.codename1.impl.midp.GameCanvasImplementation: can't find dynamically referenced class mmpp.media.MediaPlayer
Note: there were 6 unresolved dynamic references to classes or interfaces.
      You should check if you need to specify additional program jars.
Warning: there were 1 unresolved references to program class members.
         Your input classes appear to be inconsistent.
         You may need to recompile them and try again.
         Alternatively, you may have to specify the option 
         '-dontskipnonpubliclibraryclassmembers'.
Error: Please correct the above warnings first.

Help?

luane...@gmail.com

unread,
Jun 3, 2014, 7:24:11 AM6/3/14
to codenameone...@googlegroups.com, luane...@gmail.com
This is my method:

       public ArrayList<MessageItem> getMessages() {

    

    // Retrieve messages

    

    System.out.println("Retrieve messages");

    

    final ArrayList<MessageItem> messages = new ArrayList<MessageItem>();

 

    ConnectionRequest  request = new ConnectionRequest(){

            

            Hashtable ht ;

            @Override

            protected void postResponse(){

            }

            @Override

            protected void readResponse(InputStream input) throws IOException  {

             

            JSONParser jp = new JSONParser();

           

            ht = jp.parse(new InputStreamReader(input));

            System.out.println("GetMessages JSON result " + ht);

           

            if (ht.get("batchId") != null) {

            String batchId = (String) ht.get("batchId");

           

            Vector messageStoreObjects = (Vector) ht.get("messageStoreObjects");

           

            Iterator it = messageStoreObjects.iterator();

           

            while (it.hasNext()) {

           

            Hashtable messageObject = (Hashtable) it.next();

           

            //Message loadedMessage = new Message();

            String messageId = (String) messageObject.get("messageId");

            String messageSender = (String) messageObject.get("sender");

            String content = (String) messageObject.get("content");

            String dateTime = (String) messageObject.get("dateTime");

            String messageType = (String) messageObject.get("messageType");

            String url = (String) messageObject.get("url");

           

            if (url == null) {

            url = "None";

            } else if (url.length() < 3) {

            url = "None";

            }

            if (messageSender == null) {

            messageSender = "Unknown";

            } else if (messageSender.length() < 3) {

            messageSender = "Unknown";

            }

           

            Hashtable values = new Hashtable();

            values.put("content", content);

            values.put("type", messageType);

            values.put("url", url);

            values.put("dateTime", dateTime);

            values.put("sender", messageSender);

            values.put("read", false);

           

            MessageItem item = new MessageItem();

            item.setId(messageId);

            item.setValues(values);

           

            System.out.println("RETRIEVE save: id: " + messageId + ", sender: " + messageSender + ", content: " + content + ", dateTime: " + dateTime + ", type: " + messageType

            + ", url: " + url);

           

            messages.add(item);

            }

           

            sendReceipt(batchId);

       

        System.out.println("Done loading");

           

            }

            }

        };

       // Show loading

        request.setDuplicateSupported(true);

        String url = MYURLHERE;

        System.out.println("Url for message fetch: " + url);

        // Call arguments

        request.setUrl(url);

        request.setPost(false);

        NetworkManager.getInstance().addToQueueAndWait(request);

        return messages;    }

Shai Almog

unread,
Jun 3, 2014, 1:00:53 PM6/3/14
to codenameone...@googlegroups.com, luane...@gmail.com
Searching this group for can't find enclosing method would have brought up quite a few answers e.g.: https://groups.google.com/d/msg/codenameone-discussions/vQ1ImraGE2Q/2wgaOxWtzn8J

luane...@gmail.com

unread,
Jun 5, 2014, 5:55:12 AM6/5/14
to codenameone...@googlegroups.com, luane...@gmail.com
I did change my method to try do what you suggested. BUt I still get the exact same error. Did I not do it correctly?

public ArrayList<MessageItem> getMessages(ArrayList<MessageItem> theArray) {
     final Object messages = theArray;

ConnectionRequest  request = new ConnectionRequest(){

           

           Hashtable ht ;

           @Override

           protected void postResponse(){

           }

           @SuppressWarnings({ "unchecked", "rawtypes" })

                      @Override

           protected void readResponse(InputStream input) throws IOException  {

             JSONParser jp = new JSONParser();

               ht = jp.parse(new InputStreamReader(input));

                   System.out.println("GetMessages JSON result " + ht);

               if (ht.get("batchId") != null) {

                   String batchId = (String) ht.get("batchId");

                       Vector messageStoreObjects = (Vector) ht.get("messageStoreObjects");

                       Iterator it = messageStoreObjects.iterator();

                       while (it.hasNext()) {

                               Hashtable messageObject = (Hashtable) it.next();

                               String messageId = (String) messageObject.get("messageId");

                            String messageSender = (String) messageObject.get("sender");

                           String content = (String) messageObject.get("content");

                        String dateTime = (String) messageObject.get("dateTime");

                              String messageType = (String) messageObject.get("messageType");

                        String url = (String) messageObject.get("url");

                               Hashtable values = new Hashtable();

                            values.put("content", content);

                        values.put("type", messageType);

                               values.put("url", url);

                        values.put("dateTime", dateTime);

                              values.put("sender", messageSender);

                           values.put("read", false);
                               MessageItem item = new MessageItem();

                          item.setId(messageId);

                         item.setValues(values);

                         ArrayList<MessageItem> x = (ArrayList<MessageItem>) messages;
                                                 x.add(item);

                   }

                       sendReceipt(batchId);

                   }

           }

       };

       request.setDuplicateSupported(true);

       Storage inappStore = Storage.getInstance();
       
deviceId = (String) inappStore.readObject("deviceId");

       String url = "URL HERE";

       request.setUrl(url);

       request.setPost(false);

       NetworkManager.getInstance().addToQueueAndWait(request);

       return (ArrayList<MessageItem>) messages;

       

   }



































































































Shai Almog

unread,
Jun 5, 2014, 12:48:44 PM6/5/14
to codenameone...@googlegroups.com, luane...@gmail.com
Try moving the connection request anonymous inner class to a class scope instead of method scope.

luane...@gmail.com

unread,
Jun 9, 2014, 7:57:17 AM6/9/14
to codenameone...@googlegroups.com, luane...@gmail.com
It worked thank you! :)
Reply all
Reply to author
Forward
0 new messages