2012-07-11 12 views
14

मैं एक्लिप्स इंडिगो और एडीटी आर 20 का उपयोग करके एक्शनबैरशॉक 4.1 के साथ एक छोटा सा नमूना एप्लिकेशन बनाने की कोशिश कर रहा हूं।

मैंने एक खाली एंड्रॉइड प्रोजेक्ट बनाया है जिसमें रिक्त गतिविधि है, actionbarsherlock.jar को libs पर कॉपी किया गया है और इसे बिल्ड पथ में संदर्भित किया गया है।

एप्लिकेशन को सफलतापूर्वक बनाता है, लेकिन या तो एमुलेटर (2.2 का प्रयोग करके) या उपकरण (4.0.4 का प्रयोग करके) से शुरू होने पर, यह त्रुटि के साथ दुर्घटनाओं:

java.lang.NoClassDefFoundError: com.actionbarsherlock.R$styleable 
     at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:328) 
     ... 

मैं ProGuard उपयोग नहीं कर रहा।

मैंने एक्शनबैरशॉक प्रोजेक्ट की सफाई करने की कोशिश की है, नए नमूने को मेरे नमूना प्रोजेक्ट के libs में कॉपी किया है, और फिर मेरा नमूना प्रोजेक्ट साफ़ कर रहा है।

मेरे MainActivity.java काफी सरल है:

package com.example.lrn; 

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.view.Menu; 
import android.os.Bundle; 

public class MainActivity extends SherlockActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

मेनू है, लेकिन एक भी आइटम:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_settings" 
     android:title="@string/menu_settings" 
     android:orderInCategory="100" 
     android:showAsAction="ifRoom" /> 
</menu> 

और AndroidManifest.xml भी बस के बारे में के रूप में ग्रहण यह बनाया है:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.lrn" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

इस बिंदु पर मुझे वास्तव में पता नहीं है कि मुझे क्या याद आ सकता है।

उत्तर

22

मैंने अपने ग्रहण परियोजना में एक अलग तरीके से एक्शनबैरशेलॉक जोड़कर स्वयं को इस मुद्दे का समाधान किया।

actionbarsherlock.jar को libs में कॉपी करने और इसे बिल्ड पथ में जोड़ने के बजाय, मैंने इसे प्रोजेक्ट गुणों के एंड्रॉइड सेक्शन में एक संदर्भित प्रोजेक्ट के रूप में जोड़ा।

ऐप अब एमुलेटर और डिवाइस दोनों पर सही ढंग से बनाता है और चलाता है।

enter image description here

+7

ऐसा इसलिए है क्योंकि एक्शनबारशेलॉक केवल लाइब्रेरी प्रोजेक्ट के रूप में उपयोग किया जा सकता है। इसे एक जार फ़ाइल के रूप में जोड़ा नहीं जा सकता है। – Intrications

13

तो आपको मिलेगा:

ActionBarSherlock: java.lang.NoClassDefFoundError: 
     com.actionbarsherlock.R$styleable 

अपवाद है, तो आप ठीक कर सकते हैं कि आपके मैनिफ़ेस्ट फ़ाइल में शर्लक विषय जोड़कर।

android:theme="@style/Theme.Sherlock.Light.DarkActionBar" 
+0

धन्यवाद आदमी, आप बिंदु। मुझे इस त्रुटि का सामना करना पड़ रहा था। – Master

4

नवीनतम एडीटी 21.1 के साथ कोई समस्या है जो इस त्रुटि को सतह पर ले सकती है, भले ही सब कुछ सही लगता है। आप इसे एडीटी 21 और टूल्स आर 21 में डाउनग्रेड करके ठीक कर सकते हैं।

https://code.google.com/p/android/issues/detail?id=42686

-1

\ जनरल फ़ोल्डर R.java दायर किया है

0

कृपया अपनी परियोजना के पैकेज का नाम और 3 पार्टी एक ही रूप में lib पैकेज का नाम बताने के लिए सुनिश्चित ActionBarSherlock परियोजना बनाने के यहाँ कुछ और अधिक विस्तार के साथ एक बग रिपोर्ट है ।

उदा। यदि तृतीय पक्ष lib पैकेज नाम com.actionbarsherlock है और आपके प्रोजेक्ट का पैकेज नाम com.yourproject है, तो यह निश्चित रूप से आपको java.lang मिलेगा। ClassDefFoundError: com.actionbarsherlock.R $ शैली योग्य त्रुटि।

3 पार्टी lib का उपयोग करें और न माइकल हैम्पटन के जवाब है, की तरह संदर्भ का उपयोग आप चरणों का पालन करना चाहिए करने के लिए:

  1. com.actionbarsherlock के पैकेज के नाम का नाम बदलने com.yourproject करने के लिए (मुझे लगता है कि अपनी परियोजना के पैकेज के नाम com.yourproject है अपनी परियोजना पर माउस के राइट बटन पर क्लिक करें -।> Android उपकरण> नाम बदलें आवेदन पैकेज)

  2. प्रतिलिपि com.actionbarsherlock/bin/xxx.jar com.yourproject को/libs

  3. प्रतिलिपि या इस तरह के मूल्यों, anim, drawable के रूप में com.actionbarsherlock की रेस, में xxx.jar से संसाधन और आदि

मैं एक ही समस्या का सामना करना पड़ा विलय, और इसके बाद के संस्करण विधि का उपयोग खुद से सफलतापूर्वक सोचा। यदि और समस्या है, तो कृपया और पूछें। मुझे उम्मीद है कि सभी लोग एक ही समस्या का समाधान कर सकते हैं।

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