2013-04-05 54 views
3

我試圖在一個項目中創建一個抽象類作爲模板,並在另一個項目中實現它們。 但是,當試圖運行實現模板Activity的Activity時,會彈出NoClassDefFoundError。 我已經將模板項目添加到另一個的Java Build Path中,在「Order and Export」中對其進行了檢查,清理了該項目,但沒有任何幫助。我也試着用1.6編譯器編譯這個項目。所有導致相同的錯誤。 當試圖添加模板項目作爲JAR Eclipse時,表示有一個Manifest文件的重複,並且不會允許它。Android和Eclipse - 具有項目依賴性的java.lang.NoClassDefFoundError

有沒有人有任何想法我可以做什麼來解決這個問題?

這裏的錯誤日誌中我得到:

04-05 00:29:09.941: E/AndroidRuntime(1348): FATAL EXCEPTION: main 
04-05 00:29:09.941: E/AndroidRuntime(1348): java.lang.IllegalStateException: Could not execute method of the activity 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.view.View$1.onClick(View.java:2144) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.view.View.performClick(View.java:2485) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.view.View$PerformClick.run(View.java:9080) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.os.Handler.handleCallback(Handler.java:587) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.os.Looper.loop(Looper.java:123) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at dalvik.system.NativeStart.main(Native Method) 
04-05 00:29:09.941: E/AndroidRuntime(1348): Caused by: java.lang.reflect.InvocationTargetException 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at android.view.View$1.onClick(View.java:2139) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  ... 11 more 
04-05 00:29:09.941: E/AndroidRuntime(1348): Caused by: java.lang.NoClassDefFoundError: scf1984.games.testQuest.TestQuestActivity 
04-05 00:29:09.941: E/AndroidRuntime(1348):  at scf1984.games.testQuest.TestMainActivity.startTestQuest(TestMainActivity.java:18) 
04-05 00:29:09.941: E/AndroidRuntime(1348):  ... 14 more 

而且清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="scf1984.games.testQuest" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="scf1984.games.testQuest.TestMainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="scf1984.games.testQuest.TestQuestActivity" 
     android:label="@string/app_name" > 

    </activity> 
</application> 

</manifest> 

調用方法:

public void startTestQuest(View v) { 
    Intent i = new Intent(this, 
      scf1984.games.testQuest.TestQuestActivity.class); 
    startActivity(i); 
} 
+0

TestMainActivity.java的第18行發生錯誤。請顯示此代碼行以及上下文的一些周圍代碼。例如,如果此行使用較短的方法,請發佈整個方法。 – 2013-04-05 00:46:45

+0

我已經添加了請求的方法。 – scf 2013-04-05 00:50:39

+0

你的「模板項目」是一個Android庫項目嗎?如果不是,則將其標記爲這樣。 (我不使用Eclipse太多,所以我不知道確切的步驟來做到這一點。) – 2013-04-05 00:53:44

回答

2

您需要將您的「模板項目」標記爲Android庫項目。轉到Project-> Properties-> Android並選中「is library」。

+0

這個技巧。我剛剛去了Project-> Properties-> Android並檢查了「is library」。我也必須去實現項目的同一窗口,並將模板項目添加到使用庫的列表中,而不管構建路徑如何。謝謝! – scf 2013-04-05 01:40:48

0

最有可能你錯過的活動聲明Android清單。你應該pastebin完整的錯誤和你的AndroidManifest.xml

+0

那麼,這裏是錯誤: – scf 2013-04-05 00:30:04

+0

在那裏沒有鏈接。 – f2prateek 2013-04-05 00:31:02

+0

對不起,過早輸入。我編輯了我原來的帖子。我不確定要顯示哪部分代碼 - 錯誤來自設置Intent時的scf1984.games.testQuest.TestQuestActivity.class調用。 – scf 2013-04-05 00:33:32

0

Intent intent =(Intent)new Intent();

intent.setClassName(包名,包名+類);

startActivity(intent);

試試這個

+0

這個問題已被Code-Guru解決,如上面的評論所示。 – scf 2013-04-05 01:14:47

相關問題