2013-07-31 113 views
9

編輯:這個問題尚未在其他建議的解決,使問題無法實例化應用 - ClassNotFoundException的

我不得不在市場上完全工作的應用了一年多,除了極少數的崩潰報告。然後,最近我將我的應用程序更改爲一個庫,以便它可以包含在多個不同的「包裝器」項目中。這是我可以輕鬆製作不同的版本 - 免費,付費,非谷歌市場,有/沒有應用程序內購買等等。

新的「庫+包裝」應用程序似乎工作正常。我可以多次運行它,沒有錯誤。但隨後一天後(如果可能的OS已經關閉部分或全部應用程序的活動),我試圖運行它,它報道

Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass 

未能找到類是運行程序,當第一類啓動,MyGameApplicationClass - 延伸Application。這門課是圖書館的一部分。

我懷疑在兩個清單文件中有一個是愚蠢的。

包裝項目的清單包含的行...

<application android:icon="@drawable/mygame_icon" 
    android:screenOrientation="portrait" android:label="My Game Name" 
    android:name="com.mycompany.mygamelibrary.MyGameApplicationClass"> 

任何想法可能在哪裏呢?

編輯:該圖書館被引用「正確的方式」,由約克的答案this SO question定義。

編輯:我不能在此刻重複崩潰:-(我不知道它是什麼操作系統並當應用程序不使用一兩天

+0

中的其他問題,該問題的症狀也不盡相同。答案也是3票。 – Mick

+0

您是否嘗試過使用** android:name =「MyGameApplicationClass」**? –

+0

你見過這個問題的接受答案:http://stackoverflow.com/questions/4880489/android-classnotfoundexception?您能否發佈更多信息 - 例如現在它一直失敗嗎? – IanB

回答

12

有兩種可能性。無論你像我一樣,在清單文件中有拼寫錯誤。讓同事或朋友閱讀它以確保名稱是正確的。或者你沒有正確引用項目。

官方文檔介紹瞭如何正確鏈接its documentation中的項目。

爲什麼它首先看起來工作,後來停止工作有點神祕。但是,我猜測VM可能仍然有足夠的必要參考來準備好解決庫中的類。 VM的重新啓動刪除了所有這些引用,並試圖解決它們失敗。

更新:關於OP中的編輯:當您確認您已正確引用其他項目時,您可以檢查該項目是否包含在APK中,只是爲了確保。您可以重命名並打開一個APK作爲任何其他存檔(.rar適合我)。有時,它發生在我身上,該項目未正確包含在APK中。清理工作區通常會解決問題,因此可能需要重新啓動IDE,具體取決於您使用的是什麼。例如,要在Eclipse中手動執行清理,請使用Project->Clean...或通過右鍵單擊項目來嘗試Android Tools->Fix Project Properties

由於您似乎也已通過重新啓動設備解決了問題,因此可能是庫鏈接不正確。一個我從來沒有見過自己的問題,但作爲一個非常普遍的引用說:「你試過關掉它嗎?」。

+0

感謝爲我工作,更新了我的ADT,重新引用了google play lib並重新導出了apk。 –

1

可能是其構建路徑配置的疑難問題做了以下解決問題。

1.右鍵單擊您的項目並轉到Java構建路徑。

2.Click的訂購和導出選項卡。

3.檢查Android私人天秤座如果您添加了其他第三方庫。

4.按確定並清理項目。 我希望它能解決這個問題。

+0

「Android專用庫」已在庫和包裝器項目中進行檢查。 – Mick

3

您是否嘗試在'main'項目中創建MyGameApplicationClass的新子類並將其設置爲清單中的Application類?

+0

這是我會嘗試的,也是因爲您使用完全限定的名稱來引用您的應用程序類,請確保您尚未在您的清單文件中定義清單節點的程序包屬性 – Gomino

1

一旦我有相同的錯誤信息,但可能原因是不一樣的。

我做了一段代碼,工作了一段時間,然後我想改進它,並得到相同的錯誤,我無法運行它。

我能解決與

  • 正確的構建路徑順序的問題(因爲我可以看到你已經這樣做)
  • 我檢查訂單和導出選項卡中的Android的支承實-V4上.jar
  • 和關鍵是Android SDK Managert->升級所有內容和(下一個)Eclipse-> Help->檢查更新。

我升級到最新的android插件和SDK後,我的應用程序編譯並再次運行。

我希望這會幫助你!

1

我對此不太確定,但可能是因爲您的系統的debug.keystore許可證有效期已過期,因爲它僅在365天內有效。您只需要從計算機中刪除debug.keystore。當您編譯您的Android應用程序時,debug.keystore將由Eclipse自動生成。

+0

我總是爲每個密鑰庫放置1000年的持續時間我曾做過,但謝謝你的建議。 – Mick

1

顯示了相同的消息...這次它是構建路徑中的MyApp/gen和MyApp/src的不同輸出文件夾(由Maven集成引起)。

取消選中「允許源文件夾的輸出文件夾」解決了該問題。

+0

非常感謝!我遇到同樣的問題,沒有任何工作。 您的解決方案派上用場! – GPrimola

0

我在Android應用程序中遇到了這個問題,該應用程序需要在Android Studio項目中創建錯誤路徑的應用程序類。當我將類文件移動到正確的包時,它已經修復。

3

瞭解Android Studio:

Build - >Clean Project

固定的問題。

3

我在Android Studio 3中遇到了一些bug。0 Canary 4和我修復它們的方式是通過在應用程序名稱中添加一些亂碼來編輯AndroidManifest.xml。然後,我點擊構建。顯然,出現了一大堆新的錯誤信息。我將名稱改回原來的樣子,構建了應用程序,並且它剛剛運行。

有時候,我只是不知道...

編輯:只需切換時對我的筆記本電腦就遇到了這個問題,在Android 3.0工作室金絲雀4。我再次進行了更改AndroidManifest.xml文件以包含拼寫錯誤,構建和改回的相同過程。這沒有用。

我然後注意到即時運行仍然啓用。進入設置(通過點擊命令+,(逗號鍵))並輸入「即時運行」,我可以禁用即時運行,構建應用程序,並且未找到類的錯誤消失。

步驟摘要修復[FOR ME]

  1. 無效高速緩存/重啓
  2. 清潔項目
  3. 手動刪除build文件夾中(需要在這個項目視圖一個)
  4. 對您的AndroidManifest.xml文件進行故意錯誤的編輯,構建應用程序,觀察錯誤,刪除錯誤的編輯並重新編譯
  5. 禁用即時運行

同樣,我的意思並不是要影射這將解決每個人的錯誤,但是現在我已經用在兩臺不同的機器(MacOS的塞拉利昂)這些步驟的某種組合,它已經解決爲了我。希望能幫助到你。

+0

禁用Instant Run爲我修復了它 – saintjab

+0

我也是。 我會建議所有人首先「清理並構建」項目,如果它不起作用,那麼「禁用即時運行」。 – BlueLeaf

0

在我的情況下,應用程序ID是不匹配的。這應該是相同下面的圖像呈現...

AndroidManifest.xml中

enter image description here

應用/的build.gradle

enter image description here

在這種情況下,你可以看到,applicationId and 兩者都是相同的,即com.mycompany.mygamelibrary

+0

有一個與您的應用程序不匹配的軟件包名稱沒有任何問題Id –

+0

這就是爲什麼我寫了「在我的情況」。在你的情況下,它可能是不同的事情。 :) – Khan

0

這個所有Process爲我解決應用程序類異常。

步驟1:打開運行(窗口+ R)搜索 - >預取刪除所有文件(某些文件未刪除)

步驟2:打開運行(窗口+ R)搜索 - >%TEMP%刪除所有文件(某些文件無法刪除)

第3步:打開Android工作室 - >構建 - >清理項目

OR

選擇File>的Invalidate緩存/重啓>無效並重新開始從Android Studio中的工具欄。

關閉並重新打開Android項目。

OR

重啓系統

相關問題