簡體   English   中英

Android:無法實例化應用程序

[英]Android: Unable to instantiate application

我重命名了我的 package,現在我收到了這個奇怪的錯誤:

Unable to instantiate application
app.MyApplication: java.lang.ClassNotFoundException: 
app.MyApplication in loaderdalvik.system.PathClassLoader

MyApplication class 位於Application/app中。 宣言說:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  package="Application">
<application 
    android:label="AGG"
    android:name="app.MyApplication"...

我嘗試重新啟動,干凈構建。 Is 不適用於模擬器或真實設備。

地球上發生了什么?

假設您的項目基礎 package 確實是Application ,正如您在manifest中所述。

If your MyApplication class is inside this package (the package declaration of the class is package Application; ), then the application element in your androidManifest.xml should look like

<application android:name=".MyApplication" [...]

如果這個MyApplication class 在Application.app package ( package Application.app; ) 中,那么在清單中你應該寫:

<application android:name=".app.MyApplication" [...]

如果您沒有擴展android.app.Application (您沒有MyApplication extends android.app.Application類),只是想為您的應用程序設置一個名稱,請刪除此屬性,因為它對編譯器說應該實例化一個Application擴展而不是默認的android.app.Application

最后,如果第一個假設是錯誤的,並且您出於任何原因更改了 androidManifest manifest元素中的 package 聲明,請撤消它或將您的類更新為該 package。

對我來說,問題在於即時運行。 禁用它解決了這個問題。

如果我找到重新啟用並使其工作的解決方案,將更新。

這個答案對我有幫助,如果您使用的是 SDK 17+ https://stackoverflow.com/a/10176048/46459 ,則基本上將您的 lib 重命名為 libs

就我而言,它拋出:

Caused by: java.lang.IllegalAccessException: java.lang.Class<foo.bar.MyApp> is not accessible from java.lang.Class<android.app.AppComponentFactory>

原因是應用程序 class 必須使用修飾符聲明public ,例如這樣做:

public class MyApp extends Application {
}

代替:

class MyApp extends Application {
}

就我而言,我將 JAVA 編譯器合規級別從 1.7 更改為 1.6,問題就解決了。

確保清單中的所有引用都已更新,以反映您的新 package 名稱。

package="Application"應該是package="MyApplication"嗎?

您需要更正android:name屬性。 在 Android 中更改應用程序名稱后,ClassNotFoundException中提到的相同問題

簡單地清理項目並重建。

刪除這些行對我有用:

compileOptions {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
}

更新:
這個問題背后的原因是我的電腦上沒有安裝 JAVA 8

對我來說,問題是由於 class 的訪問級別,它必須是公開的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM