2012-02-03 19 views
6

क्या मैं एक एंड्रॉइड प्रोजेक्ट में जावा प्रोजेक्ट का उपयोग कर सकता हूं भले ही जावा प्रोजेक्ट के कुछ वर्ग सामान्य एंड्रॉइड प्रोजेक्ट में पहचाने जाएं? उदाहरण के लिए javax.xml पैकेज?एंड्रॉइड एप्लिकेशन में जावा प्रोजेक्ट आयात करें?

  1. या तो उस जावा परियोजना के साथ एक जार बनाने और इसे एंड्रॉयड
  2. में आयात या Android में परियोजना का संदर्भ (के रूप में मैं समझ गया यह संभव है):

    वहाँ 2 संभावनाओं के रूप में मैं इसे देख रहे हैं।

लेकिन किसी भी तरह से में, उन वर्गों है कि लेकिन एंड्रॉयड में नहीं जावा में पाए जाते हैं मेरे Android आवेदन में ठीक हो जाएगा? यह काम करेगा? धन्यवाद। Printscreen from build path of my android app

Printscreen from build path of my android app

मैं JavaProject बनाया, और फिर एक संदर्भ के रूप में मेरे Android परियोजना में यह आयात किया। मुझे एक त्रुटि मिलती है जिसकी मुझे उम्मीद नहीं थी, यह मेरे जावा प्रोजेक्ट से मेरे क्लास को पहचान नहीं पाता है।

+0

यह तब तक काम करना चाहिए जब तक वे एंड्रॉइड के साथ विवादित न हों। – kosa

+0

http://www.wiseandroid.com/post/2010/07/16/Porting-existing-Java-code-to-Android.aspx। हालांकि यह कहता है कि कुछ सामान एंड्रॉइड पसंद नहीं करेंगे। – sealz

+0

यही वह है जो मैं उत्सुक हूं, आमतौर पर यह एंड्रॉइड के साथ संघर्ष करेगा, क्योंकि पैकेज javax.xml एंड्रॉइड के डिफ़ॉल्ट पैकेज में नहीं है और कोर लाइब्रेरी आयात करना संकलित नहीं है। मैं उम्मीद कर रहा था कि एक जावा परियोजना आयात करना एक ही परिणाम नहीं होगा, एंड्रॉइड उन वर्गों के बारे में शिकायत करेगा। – user1140656

उत्तर

1

आप ग्रहण उपयोग कर रहे हैं (एडीटी प्लगइन के साथ) आप अपने Android परियोजना के निर्माण के रास्ते में जावा परियोजना संदर्भित कर सकते हैं। यह उन वर्गों को आपके .apk आउटपुट में पैकेज करेगा और आपको अपने ऐप में उनका उपयोग करने की अनुमति देगा।

जैसा कि आपने अपनी टिप्पणियों में बताया है; जावा प्रोजेक्ट को एक एंड्रॉइड लाइब्रेरी के रूप में संदर्भित करने से आपके मामले में काम नहीं होगा, क्योंकि जैवैक्स की उपस्थिति। * पैकेज के परिणामस्वरूप एक्लिप्स में समय त्रुटियों को संकलित किया जाएगा। इस मामले में, आपको विकल्प 1 का चयन करना होगा और अपने जावा प्रोजेक्ट से जार फ़ाइल बनाना होगा और इसे as explained here शामिल करना होगा। इस तरह, क्लास फाइलों को जवाक्स की आवश्यकता होती है। * किसी भी संकलन/रनटाइम त्रुटियों का उत्पादन नहीं करना चाहिए जब तक कि आप उन्हें का उपयोग करने का प्रयास न करें। किसी भी तरह से, जावा बिल्ड पथ का उपयोग करके काम नहीं करेगा जैसा कि आप उम्मीद करते हैं - कक्षा फ़ाइलों को इस तरह से बंडल नहीं किया जाता है।

एंड्रॉइड प्लेटफ़ॉर्म some of javax.xml प्रदान करता है, लेकिन पूरे पैकेज नहीं (इस पर अधिक जानकारी के लिए this document पढ़ें)। प्रायः सबसे आसान समाधान आपके प्रभावित जावा कोड के एंड्रॉइड समकक्ष को लिखना है, जिसमें लापता निर्भरताओं की आवश्यकता नहीं है, और bridge 2 कार्यान्वयन हैं ताकि प्रत्येक प्रोजेक्ट के लिए सही एक का उपयोग किया जा सके।

0

आखिर में काम किया, मेरा सबसे बड़ा मुद्दा यूआरएल था जिसे मैं एचटीपीपोस्ट में पास कर रहा था और एसएपी के साथ ksoap2 मेरे लिए बिल्कुल काम नहीं करता था।

private void testCallingService() { 
    DefaultHttpClient httpclient = new DefaultHttpClient(); 
    httpclient.getCredentialsProvider().setCredentials(
      new AuthScope("ip here", port here), 
      new UsernamePasswordCredentials(username, password)); 

    try { 
     String buffer = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='namespace'><soapenv:Header/><soapenv:Body><urn:methodname><USERNAME>test</USERNAME></urn:methodname></soapenv:Body></soapenv:Envelope>"; 
     HttpPost httppost = new HttpPost(url); 

     StringEntity se = new StringEntity(buffer, HTTP.UTF_8); 
     se.setContentType("text/xml"); 
     httppost.setHeader("Content-Type", 
       "application/soap+xml;charset=UTF-8"); 
     httppost.setEntity(se); 

     CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
     credsProvider.setCredentials(new AuthScope("ip", port), 
       new UsernamePasswordCredentials(username, password)); 
     httpclient.setCredentialsProvider(credsProvider); 

     BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient 
       .execute(httppost); 
     if (httpResponse.getStatusLine() != null) { 
      System.out.println("Http status: " 
        + httpResponse.getStatusLine()); 
     } 

     RequestLine requestLine = httppost.getRequestLine(); 

     String response = getResponseBody(httpResponse); // read server response. response.getEntity().getContent();... 
     System.out.println("response: " + response); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
    httpclient.getConnectionManager().shutdown(); 
} 

इसलिए, मैंने स्वयं को एसओएपी लिफाफा बनाया, निकटतम भविष्य में ऐसा करने से रोकने की कोशिश करूंगा। प्रमाण पत्र प्रदाता का एक उदाहरण बनाया और मेरे उपयोगकर्ता/पास विवरण सेट करें। सर्वर से स्थिति 200 है और मुझे वह जानकारी प्राप्त होती है जो मुझे चाहिए। एक समस्या यह बनी हुई है कि प्रतिक्रिया स्पष्ट रूप से बहुत बड़ी है (और यह यहां रुकने वाला नहीं है) इसलिए मेरी प्रतिक्रिया कम हो गई है। अब हल करने के लिए काम कर रहे हैं। मुझे उम्मीद है कि यह किसी की मदद करेगा।

संबंधित मुद्दे