java - जीसीएम डेमो सर्वर एप्लिकेशन को बनाने में समस्या




android ant google-cloud-messaging (2)

जब भी मैं जीसीएम डेमो सर्वर को ant का उपयोग कर प्रलेखन से बनाने का प्रयास करता हूं, मुझे 17 संकलन त्रुटियां मिलती हैं। ऐसा लगता है कि कुछ जीसीएम पुस्तकालय गायब हैं। मैं इन मुद्दों को कैसे सुलझा सकता हूं?

 Errors:

  Buildfile: build.xml

init:

compile:
    [javac] Compiling 7 source files to /root/gcm/samples/gcm-demo-server/build/classes
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:18: package com.google.android.gcm.server does not exist
    [javac] import com.google.android.gcm.server.Constants;
    [javac]                                     ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:19: package com.google.android.gcm.server does not exist
    [javac] import com.google.android.gcm.server.Message;
    [javac]                                     ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:20: package com.google.android.gcm.server does not exist
    [javac] import com.google.android.gcm.server.MulticastResult;
    [javac]                                     ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:21: package com.google.android.gcm.server does not exist
    [javac] import com.google.android.gcm.server.Result;
    [javac]                                     ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:22: package com.google.android.gcm.server does not exist
    [javac] import com.google.android.gcm.server.Sender;
    [javac]                                     ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:46: cannot find symbol
    [javac] symbol  : class Sender
    [javac] location: class com.google.android.gcm.demo.server.SendAllMessagesServlet
    [javac]   private Sender sender;
    [javac]           ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:59: cannot find symbol
    [javac] symbol  : class Sender
    [javac] location: class com.google.android.gcm.demo.server.SendAllMessagesServlet
    [javac]   protected Sender newSender(ServletConfig config) {
    [javac]             ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:62: cannot find symbol
    [javac] symbol  : class Sender
    [javac] location: class com.google.android.gcm.demo.server.SendAllMessagesServlet
    [javac]     return new Sender(key);
    [javac]                ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:81: cannot find symbol
    [javac] symbol  : class Message
    [javac] location: class com.google.android.gcm.demo.server.SendAllMessagesServlet
    [javac]         Message message = new Message.Builder().build();
    [javac]         ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:81: package Message does not exist
    [javac]         Message message = new Message.Builder().build();
    [javac]                                      ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:82: cannot find symbol
    [javac] symbol  : class Result
    [javac] location: class com.google.android.gcm.demo.server.SendAllMessagesServlet
    [javac]         Result result = sender.send(message, registrationId, 5);
    [javac]         ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:115: cannot find symbol
    [javac] symbol: class Message
    [javac]         Message message = new Message.Builder().build();
    [javac]         ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:115: package Message does not exist
    [javac]         Message message = new Message.Builder().build();
    [javac]                                      ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:116: cannot find symbol
    [javac] symbol: class MulticastResult
    [javac]         MulticastResult multicastResult;
    [javac]         ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:123: cannot find symbol
    [javac] symbol: class Result
    [javac]         List<Result> results = multicastResult.getResults();
    [javac]              ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:127: cannot find symbol
    [javac] symbol: class Result
    [javac]           Result result = results.get(i);
    [javac]           ^
    [javac] /root/gcm/samples/gcm-demo-server/src/com/google/android/gcm/demo/server/SendAllMessagesServlet.java:140: cannot find symbol
    [javac] symbol: variable Constants
    [javac]             if (error.equals(Constants.ERROR_NOT_REGISTERED)) {
    [javac]                              ^
    [javac] 17 errors

BUILD FAILED

Answers

मैंने खुद को इस परियोजना को कभी नहीं चलाया है, लेकिन ऐसा लगता है कि यह एक्स्ट्रास \ google \ gcm \ gcm-server \ dist \ gcm-server.jar और इसके निर्भरता से पुस्तकालयों को याद नहीं कर रहा है। इस प्रोजेक्ट के अंतर्गत लिब्स फ़ोल्डर में जोड़ें और फिर से प्रयास करें।


जावा में कमजोर संदर्भ की तरह विशेषताएं हैं: https://docs.oracle.com/javase/7/docs/api/java/lang/ref/WeakReference.html

नरम संदर्भ: https://docs.oracle.com/javase/7/docs/api/java/lang/ref/SoftReference.html

ये आपको विशेष रूप से वीएम - >> कचरा इकट्ठा करने के लिए लक्षित करने की अनुमति देता है।

भी, Concurrency API है http://winterbe.com/posts/2015/04/07/java8-concurrency-tutorial-thread-executor-examples/

कि वह निष्पादक सेवा और थ्रेड पूलिंग का उपयोग करता है।

और जावा में स्मृति प्रतिबंधक अनुप्रयोगों के लिए सॉफ्टवेयर को कॉल करना चाहिए

System.gc() // garbage collector

अंतराल पर इसके स्वचालित आमंत्रण के बावजूद

आप परियोजना के लिए लोड बैलेंसर्स शेड्यूल करने के लिए रनटाइम क्लास का उपयोग कर सकते हैं https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

public Process exec(String command)


                throws IOException
//--------------------------------------------------------
    Executes the specified string command in a separate process.

public void gc()

//----------------------------------------------------------
Runs the garbage collector. Calling this method suggests that the Java virtual machine expends effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the virtual machine has made its best effort to recycle all discarded objects
This is a convenience method. An invocation of the form exec(command) behaves in exactly the same way as the invocation exec(command, null, null). 

थ्रेडिंग हमेशा स्मृति गहन अनुप्रयोगों के साथ एक समस्या रही है और जावाएफएक्स के भीतर एक दृश्य के प्रत्येक घटक धागे को दृढ़ता से एक दृश्य से बंधे हैं, लेकिन कार्यान्वयन के रूप में, यह कमजोर बंधन प्रतीत होता है।

यदि लंबे समय तक चलने की आवश्यकता होती है तो मूल पक्ष (जेएनआई) में कुछ प्रोसेसर गहन कार्यों को संभालने के लिए बेहतर होता है। इसके अलावा, एक स्वच्छ वास्तुकला लाभ होगा

https://www.google.co.in/webhp?sourceid=chrome-instant&rlz=1C1CHBF_enIN736IN736&ion=1&espv=2&ie=UTF-8#q=clean+code& *





java android ant google-cloud-messaging