0

AndroidManifest.java

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bidnextjob.bidnextjob">

    <!-- Lat lon fetching permission by GPSTracker class start and also use for google map -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.bidnextjob.bidnextjob.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Allows access to the flashlight -->
    <permission
        android:name="android.permission.FLASHLIGHT"
        android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
        android:protectionLevel="normal" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/MyTheme">
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity" />
        <activity android:name=".LoginActivity" />
        <activity android:name=".RegisterActivity" />
        <activity
            android:name=".HomeActivity"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity android:name=".FilterActivity" />
        <activity android:name=".JobDetailsActivity" />
        <activity android:name=".EditProfileActivity"
            android:windowSoftInputMode="stateAlwaysHidden"/>
        <activity
            android:name=".ChatActivity"
            android:windowSoftInputMode="stateAlwaysHidden" />

        <activity android:name=".AboutUsActivity" />
        <activity android:name=".HelpActivity" />
        <activity android:name=".ReviewActivity" />
        <activity
            android:name=".CommentActivity"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity android:name=".ForgetPasswordActivity" />
        <activity
            android:name=".PlaceBidActivity"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity
            android:name=".EditBidActivity"
            android:windowSoftInputMode="stateAlwaysHidden" />
        <activity android:name=".JobDetails1Activity" />
        <activity android:name=".NotificationsActivity" />
        <activity android:name=".ChooseCategoryActivity" />
        <activity android:name=".BidDetailsActivity" />
        <activity android:name=".EditAddressActivity" />
        <activity android:name=".UpdateProfileActivity" />
        <activity android:name=".GiveRatingActivity" />
        <activity android:name=".ArchiveActivity"/>
        <activity android:name=".AutoCompleteAddress"/>
        <activity
            android:name=".SocialLoginActivity"
            android:label=".SocialLoginActivity" />

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="<some api key>" />

        <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <service android:name="utilities.gcm.GcmIntentService" />

        <receiver
            android:name="utilities.gcm.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.bidnextjob.bidnextjob" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

I'm accessing a Pojo class having static method for returning value. When I access this static method in my Splash Screen class(Launcher page), I get a NoClassDefFoundError for that Pojo class. How to avoid this exception without making the method non-static?

LogCat

FATAL EXCEPTION: main
Process: com.bidnextjob.bidnextjob, PID: 30515
java.lang.NoClassDefFoundError: shared_pref.SharedStorage
at com.bidnextjob.bidnextjob.SplashActivity.onCreate(SplashActivity.java:21)
at android.app.Activity.performCreate(Activity.java:5280)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2322)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2410)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5388)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:655)
at dalvik.system.NativeStart.main(Native Method)

Pojo class

package shared_pref;

public class SharedStorage {
    static SharedPreferences preference;

    private static String prefData="ExampleStructApp";

    public static String UserId= "UserId";
    public static String UserType= "UserType";

    public static void setValue(Context context,String key,String data){
        preference = context.getSharedPreferences(prefData, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preference.edit();
        editor.putString(key,data);
        editor.commit();
    }

    public static String getValue(Context context,String key){
        preference = context.getSharedPreferences(prefData, Context.MODE_PRIVATE);
        String id = preference.getString(key,"");
        return id;
    }

    public static void resetValue(Context context){
        preference = context.getSharedPreferences(prefData, Context.MODE_PRIVATE);
        preference.edit().clear().commit();
    }
}

Splash Screen class

public class SplashActivity extends AppCompatActivity {


    private String user_id = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // Here I get NoClassDefFoundError
        user_id = SharedStorage.getValue(getApplicationContext(),"UserId");



        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {

                if(user_id != null && !user_id.isEmpty()){
                    startActivity(new Intent(SplashActivity.this, HomeActivity.class));
                    finish();
                }else{
                    startActivity(new Intent(SplashActivity.this, MainActivity.class));
                    finish();
                }
            }
        }, 3000);

    }
}
Ped7g
  • 15,763
  • 2
  • 25
  • 54
Somnath Pal
  • 127
  • 1
  • 4
  • 10

1 Answers1

0

This is caused when there is a class file that your code depends on and it is present at compile time but not found at runtime. Look for differences in your build time and runtime classpaths.

Rushi Ayyappa
  • 2,719
  • 2
  • 14
  • 30
  • Same error happens if I use an object. I'm trying to keep the pojo under same package name as declared in Manifest. @Rushi – Somnath Pal Nov 28 '16 at 11:39