Reputation: 33
This ClassNotFound exception came when I run it on android 4.4 devices, I wonder how did it happen, because I have already registered all of my activities under my manifest file, but still this error is occurring again and it makes me confused. Please can anyone suggest me what is wrong with my code:
Here is error :
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.Forewarn.ForewarnApp.activities.Splash Activity" on path: DexPathList[[zip file "/data/app/com.Forewarn.ForewarnApp-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.Forewarn.ForewarnApp-2, /system/lib]]
Here is manifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.Forewarn.ForewarnApp">
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission
android:name="android.permission.MODIFY_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<configuration>
<release>
true
</release>
</configuration>
<permission
android:name="com.Forewarn.ForewarnApp.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.Forewarn.ForewarnApp.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:name=".activities.SoteriaApplication"
android:allowBackup="false"
android:icon="@drawable/ic_launcherr"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:configChanges="orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity
android:name=".activities.SignInActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.SignUpActivity" />
<activity android:name=".activities.ForgotPasswordActivity" />
<activity android:name=".activities.SerachResultsActivity" />
<activity android:name=".activities.DetailsPageActivity" />
<activity android:name=".activities.PropertyDetailsActivity" />
<activity android:name=".activities.BankurptsDetailsActivity" />
<activity android:name=".activities.SampleActivity" />
<activity android:name=".activities.ActivityCallLog" />
<activity android:name=".activities.SettingsActivity" />
<activity android:name=".activities.VehicleDetailsActivity" />
<activity android:name=".activities.ResultsActivity" />
<activity android:name=".activities.OthersActivity" />
<activity android:name=".activities.NoRecordsActivity" />
<activity android:name=".activities.MoreRecordsActivity" />
<activity
android:name=".activities.CriminalDetailsActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.CriminalSampleActivity" />
<activity
android:name=".activities.OtpActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.AddressesDetailsActivity" />
<activity
android:name=".activities.PhonesHistoryDetailsActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.ContactsReaderActivity" />
<activity
android:name=".activities.FingerprintTermsAndConditionsActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.ChangePasswordActivity" />
<activity
android:name=".activities.TermsandConditionsActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name=".activities.PdfPasswordActivity"></activity>
</application>
</manifest>
and btw i put my minsdkversion = 19 maxsdkversion = 27 and error getting app crashed on android 8.1.0 (api level 27) devices also.
here is my application class code :
public class SoteriaApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AccountUtils.assignContext(this);
MultiDex.install(this);
}
}
btw i tried with instant run disabling method: now i get verify error : like this :
FATAL EXCEPTION: main
Process: com.Forewarn.ForewarnApp, PID: 1060
java.lang.VerifyError: com/Forewarn/ForewarnApp/activities/SignInActivity
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
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:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Upvotes: 2
Views: 214
Reputation: 196
If you have done the MultiDex
work mentioned by @A.s.ALI and @Tomin B Azhakathu and still have the ClassNotFoundException
. Then you should look up if the com.Forewarn.ForewarnApp.activities.SplashActivity
is in the main dex
(You can drag your apk just in the Android Studio and confirm it). If com.Forewarn.ForewarnApp.activities.SplashActivity
is in the main dex
, and still throw the exception just let me know, thx.
Upvotes: 0
Reputation: 2082
Update2(After reading your updated question and error log)
I have seen that you have verifier log , so let me describe it hope that you can get some clue. Here is this discussion in detail.
This error indicates that the verifier, included in the Java Virtual Machine (JVM), detected a class file that despite well formed, it contains some type of internal inconsistency or faces a security problem.
The VerifyError class extends the LinkageError class, which is used to indicate those error cases, where a class has a dependency on some other class and that class has incompatibly changed after the compilation. Furthermore, the LinkageError class extends the Error class, which is used to indicate those serious problems that an application should not catch. A method may not declare such errors in its throw clause, because these errors are abnormal conditions that shall never occur.
Finally, the VerifyError exists since the 1.0 version of Java.
For me this could be your case. Consider this SO question and check your dependencies. Clean your project. or even restart your system. I do believe it is not cleaning your project rightly.
Update1 I have the same problem. How I solved it is by adding following line in build.gradle file dependencies.
compile 'com.android.support:multidex:1.0.2'
then in my Application class i extend it with "extends MultiDexApplication" I made sure to add this in onCreate method . like
public class SoteriaApplication extends MultiDexApplication {
//Please extend your application class with MultiDexApplication
@Override
public void onCreate() {
super.onCreate();
AccountUtils.assignContext(this);
MultiDex.install(this);
}}
Please extend you application class with MultiDexApplication class.
Upvotes: 0
Reputation: 2686
Sound Like a Multidex issue. In your Application Class activities.SoteriaApplication
Add this
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
app.gradle
android {
defaultConfig {
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
}
Enable Multidex in Gradle too
NB : Use android:name=".activities.SoteriaApplication"
only if This is Your Custom Appplication Class
Also Try Clean And Rebuild the Project and Run Application without Instant Run. Check Whether problem is resolved
Upvotes: 1
Reputation: 1445
Do one thing-:
Go to File on top menu->Setting->Build Execution->Instant run->If its enabled then try disabling that.
Upvotes: 0