2013-11-23 1 views
0

이것은 안드로이드에서 Google지도를 처음 사용하는 것이지만,지도를 표시 할 페이지로 이동할 때 NoClassDefError가 표시됩니다.Android NoClassDefError (클래스는 Google지도를 사용합니다.)

나는 이것에 대한 이유를 탐구하고 나는 정상적인 자바 이해하지만 문제를 찾을 수 없습니다.

Google Play 서비스 라이브러리는 내 프로젝트에서 라이브러리로 가져 오기 때문에 Google지도를 찾는데 실패하지 않습니다. (어쨌든 말할 수있는 것에서부터).

나머지 애플리케이션은 정상적으로 작동하지만 오류는이 페이지가로드/탐색 될 때만 발생합니다.

로그 캣 출력 :

11-22 19:24:11.555: E/AndroidRuntime(1732): FATAL EXCEPTION: main 
11-22 19:24:11.555: E/AndroidRuntime(1732): Process: dcs.aber.ac.uk.cs211.group02, PID: 1732 
11-22 19:24:11.555: E/AndroidRuntime(1732): java.lang.NoClassDefFoundError: dcs.aber.ac.uk.cs211.group02.WalkRecording 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at dcs.aber.ac.uk.cs211.group02.CreateWalkActivity$1.onClick(CreateWalkActivity.java:39) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.view.View.performClick(View.java:4424) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.view.View$PerformClick.run(View.java:18383) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.os.Handler.handleCallback(Handler.java:733) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.os.Handler.dispatchMessage(Handler.java:95) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.os.Looper.loop(Looper.java:137) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at android.app.ActivityThread.main(ActivityThread.java:4998) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at java.lang.reflect.Method.invoke(Method.java:515) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
11-22 19:24:11.555: E/AndroidRuntime(1732):  at dalvik.system.NativeStart.main(Native Method) 

콘솔 출력 :

[2013-11-23 00:23:13 - WalkingTours] Android Launch! 
[2013-11-23 00:23:13 - WalkingTours] adb is running normally. 
[2013-11-23 00:23:13 - WalkingTours] Performing dcs.aber.ac.uk.cs211.group02.StartScreen activity launch 
[2013-11-23 00:23:13 - WalkingTours] Automatic Target Mode: using existing emulator 'emulator-5556' running compatible AVD 'googleAPIDevice' 
[2013-11-23 00:23:13 - WalkingTours] Uploading WalkingTours.apk onto device 'emulator-5556' 
[2013-11-23 00:23:13 - WalkingTours] Installing WalkingTours.apk... 
[2013-11-23 00:23:25 - WalkingTours] Success! 
[2013-11-23 00:23:25 - WalkingTours] Starting activity dcs.aber.ac.uk.cs211.group02.StartScreen on device emulator-5556 
[2013-11-23 00:23:29 - WalkingTours] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=dcs.aber.ac.uk.cs211.group02/.StartScreen } 

manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="dcs.aber.ac.uk.cs211.group02" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="22" /> 

    <permission 
     android:name="dcs.aber.ac.uk.cs211.group02.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <!-- Accessing camera hardware --> 
    <!-- putting android.hardware.camera prevents non-camera devices using this app --> 
    <uses-feature android:name="android.hardware.camera" /> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <uses-permission android:name="dcs.aber.ac.uk.cs211.group02.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="dcs.aber.ac.uk.cs211.group02.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 


    <application 

     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:logo="@drawable/ic_launcher" 
     android:theme="@style/AppTheme" > 
     <uses-library 
      android:name="com.google.android.maps" 
      android:required="true" /> 

     <activity 
      android:name="dcs.aber.ac.uk.cs211.group02.StartScreen" 
      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="dcs.aber.ac.uk.cs211.group02.CreateWalkActivity" 
      android:label="@string/title_activity_create_walk" > 
     </activity> 
     <activity 
      android:name="dcs.aber.ac.uk.cs211.group02.HelpScreen" 
      android:label="@string/title_activity_help_screen" > 
     </activity> 
     <activity 
      android:name="dcs.aber.ac.uk.cs211.group02.WalkRecording" 
      android:label="@string/title_activity_walk_recording" > 

     </activity> 
     <activity 
      android:name="dcs.aber.ac.uk.cs211.group02.CreateNewPOIActivity" 
      android:label="@string/title_activity_create_new_poi" > 
     </activity> 
    </application> 

    <meta-data 
     android:name="dcs.aber.ac.uk.cs211.group02.API_KEY" 
     android:value="AIzaSyBKYpKfU4zn-3IBkskKsLbwRsQ1-IqFldk" /> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

</manifest> 

오류 XML (WalkRecording.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/black" 
    tools:context=".WalkRecording" > 

    <fragment 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/mapView" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</RelativeLayout> 
가지는 클래스,451,515,

WalkRecording.java

package dcs.aber.ac.uk.cs211.group02; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.Menu; 

public class WalkRecording extends FragmentActivity { 

    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_walk_recording); 
     map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapView)).getMap(); 

     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.walk_recording, menu); 
     return true; 
    } 



} 

이 클래스에 스왑 코드 :

public void addListenerOnButtons(){ 

     recordButton = (Button) findViewById(R.id.createWalkButton); 
     recordButton.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v){ 

       Intent intent = new Intent(context, WalkRecording.class); 
       startActivity(intent); 
      } 

     }); 

나는 또한 그래서 세대 폴더는 빌드 순서에서 소스 폴더 위에 설정했습니다.

답변

0

아주 간단한 해결책입니다. 나는 가야만했다 :

프로젝트> 속성> 주문 및 내보내기 supportv4.jar을 제거하고 다시 빌드하고 다시 추가하십시오.

왜 이것이 문제인지 모르지만 이제는 효과가 있습니다.

0

NoClassDefFoundError를

는 뭔가가 런타임에 찾을 수 없습니다 나타냅니다 만, 컴파일 타임에 참석했다. 클래스 경로에서 일부 라이브러리가 누락되었을 수 있습니다.

관련 문제