2013-04-05 5 views
3

하나의 프로젝트에서 추상 클래스를 템플릿으로 작성하고 다른 클래스에 구현하려고합니다. 그러나 Activity 템플릿을 구현하는 Activity를 실행하려고하면 NoClassDefFoundError가 나타납니다. 다른 프로젝트의 Java 빌드 경로에 템플릿 프로젝트를 추가하고 "주문 및 내보내기"에서 프로젝트를 청소했지만 아무것도 도움이되지 않습니다. 또한 1.6 컴파일러로 프로젝트를 컴파일하려고했습니다. 모두 동일한 오류가 발생했습니다. 템플릿 프로젝트를 JAR 파일로 추가하려고 할 때 Eclipse에 매니페스트 파일이 중복되어 있으므로 허용되지 않습니다.Android and Eclipse - 프로젝트 종속성이있는 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 

그리고 매니페스트 : 여기

오류 I 수신 로그의

<?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 번 줄에서 발생합니다. 이 코드 줄뿐만 아니라 주변 코드를 보여주십시오. 예를 들어이 줄이 짧은 방법이면 전체 방법을 게시하십시오. –

+0

요청한 방법을 추가했습니다. – scf

+0

"템플릿 프로젝트"가 Android 라이브러리 프로젝트입니까? 그렇지 않은 경우 표시하십시오. (나는 이클립스를 많이 사용하지 않기 때문에 이것을 수행하는 정확한 단계를 알지 못한다.) –

답변

2

"템플릿 프로젝트"를 Android 라이브러리 프로젝트로 표시해야합니다. Project-> Properties-> Android로 이동하여 "is library"를 선택합니다.

+0

그 트릭을했습니다. 방금 Project-> Properties-> Android로 가서 "is library"를 확인했습니다. 또한 구현 프로젝트와 동일한 창으로 이동하여 빌드 경로에 관계없이 사용 된 라이브러리 목록에 템플릿 프로젝트를 추가해야했습니다. 감사! – scf

0

는 대부분의 경우 당신이 활동 선언을 놓치고있어 안드로이드 매니페스트. 전체 오류와 AndroidManifest.xml을 붙여 넣어야합니다.

+0

글쎄, 여기에 오류가 있습니다 : – scf

+0

거기에 링크가 없습니다. – f2prateek

+0

죄송합니다, 미성년자를 입력하십시오. 나는 원래의 글을 편집했다. 나는 코드의 어떤 부분을 보여줄지 확신하지 못합니다. 오류는 의도를 설정할 때 scf1984.games.testQuest.TestQuestActivity.class 호출에서 기인합니다. – scf

0

인 텐트 intent = (인 텐트) new 인 텐트();

intent.setClassName (패키지 이름, 패키지 이름 + 클래스);

startActivity (인 텐트);

시도해보십시오.

+0

위의 의견에서 볼 수 있듯이 Code-Guru에서 문제가 해결되었습니다. – scf

관련 문제