0

最近、Eclipse を Juno リリースにアップグレードしましたが、すべてが機能しているように見えました。数週間後 (現在)、Android アプリで作業する必要があったため、ADT プラグインを再インストールしました。外部の Android SDK ディレクトリでいくつかの関連事項を更新する必要がありました。その後、物事は順調に見えました。

しかし、エミュレーターとテスト デバイスの両方でアプリを起動するとすぐに、アプリがクラッシュします。

09-10 14:55:14.879: I/ActivityManager(1571): Start proc nl.reinders.android.inventoryapp for activity nl.reinders.android.inventoryapp/.MainMenu: pid=5890 uid=10027 gids={3001, 3002, 3003}
09-10 14:55:14.999: W/dalvikvm(5890): Unable to resolve superclass of Lnl/reinders/android/inventoryapp/MyApplication; (239)
09-10 14:55:14.999: W/dalvikvm(5890): Link of class 'Lnl/reinders/android/inventoryapp/MyApplication;' failed
09-10 14:55:15.009: W/dalvikvm(5890): threadid=1: thread exiting with uncaught exception (group=0x40018560)
09-10 14:55:15.009: E/AndroidRuntime(5890): FATAL EXCEPTION: main
09-10 14:55:15.009: E/AndroidRuntime(5890): java.lang.RuntimeException: Unable to instantiate application nl.reinders.android.inventoryapp.MyApplication: java.lang.ClassNotFoundException: nl.reinders.android.inventoryapp.MyApplication in loader dalvik.system.PathClassLoader[/data/app/nl.reinders.android.inventoryapp-2.apk]
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3264)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.ActivityThread.access$2200(ActivityThread.java:117)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.os.Looper.loop(Looper.java:123)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.ActivityThread.main(ActivityThread.java:3729)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at java.lang.reflect.Method.invokeNative(Native Method)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at java.lang.reflect.Method.invoke(Method.java:507)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:632)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at dalvik.system.NativeStart.main(Native Method)
09-10 14:55:15.009: E/AndroidRuntime(5890): Caused by: java.lang.ClassNotFoundException: nl.reinders.android.inventoryapp.MyApplication in loader dalvik.system.PathClassLoader[/data/app/nl.reinders.android.inventoryapp-2.apk]
09-10 14:55:15.009: E/AndroidRuntime(5890):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.Instrumentation.newApplication(Instrumentation.java:942)
09-10 14:55:15.009: E/AndroidRuntime(5890):     at android.app.LoadedApk.makeApplication(LoadedApk.java:461)
09-10 14:55:15.009: E/AndroidRuntime(5890):     ... 11 more
09-10 14:55:15.019: W/ActivityManager(1571):   Force finishing activity nl.reinders.android.inventoryapp/.MainMenu
09-10 14:55:15.529: W/ActivityManager(1571): Activity pause timeout for HistoryRecord{408f7cb0 nl.reinders.android.inventoryapp/.MainMenu}
09-10 14:55:25.649: W/ActivityManager(1571): Activity destroy timeout for HistoryRecord{408f7cb0 nl.reinders.android.inventoryapp/.MainMenu}

重要な私見は、「スーパークラスを解決できません」という警告であり、その結果、クラス自体がロードされません。奇妙なことに、このクラスは Eclipse に存在し、RoboGuice の Application クラス (http://code.google.com/p/roboguice/) であり、その jar が存在します。私はそれをクリックすることができます、クラスファイルが開かれます(もちろん読めませんが)...

偶然にも古い環境 (Eclipse Indigo) をまだ使用していましたが、Android SDK がアップグレードされたため、ADT プラグインの更新が必要であり、同じ問題がありました。

RoboGuice jar が含まれていないように見える理由はありますか?

4

3 に答える 3

0

jar ファイルがビルド パスに含まれているかどうかを確認してください。フォルダー内のすべての jarlibsはビルド パスに自動的に含まれます。ファイルが別の場所にある場合は、プロジェクト プロパティのビルド パスに手動で含める必要があります。

于 2012-09-10T12:40:56.157 に答える
0

libsvsの問題に加えて、lib2 つのバージョンの eclipse と 2 つの SDK フォルダーを用意し、古い eclipse (古い ADT プラグインを使用) を新しい SDK フォルダーを指すように設定することで、この状況に陥ることができるようです。

ADT が目的の SDK フォルダーを指していることを確認してください。

于 2013-05-16T15:20:03.707 に答える
0

新しい ADT プラグインでは、すべての外部「jar」ファイルをlibs/フォルダーに配置する必要があります (プロジェクトからそれらを参照する必要はありません...そのため、右クリック > プロパティ > Java ビルド パス > ライブラリとJAR ファイルへの参照を削除します)

于 2012-09-10T12:22:24.647 に答える