2012-04-17 3 views
0

프로젝트에 OSMdroid를 사용하려고하는데, 가장 간단한 코드 작업을 완전히 할 수 없습니다. 글쎄, 며칠 전지도를 표시 할 수 있었고 이제는 MapView를 인스턴스화 할 수도 없습니다. 코드를 sipmlest 형식으로 줄였습니다. 나는 일식과 함께 일한다. 나는 osmdroid - 안드로이드-3.0.5.jar와 SLF4J-안드로이드-1.5.8.jar를 다운로드하고 난 후 그들에 마우스 오른쪽 버튼으로 클릭 클래스 경로 파일OsmDroid MapView를 인스턴스화 할 수 없습니다.

<classpathentry kind="lib" path="lib/osmdroid-android-3.0.5.jar"/> 
<classpathentry kind="lib" path="lib/slf4j-android-1.5.8.jar"/> 

에 또는에 의해 행을 추가하여 프로젝트를 포함

import android.app.Activity; 
import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapController; 
import org.osmdroid.views.MapView; 

import android.os.Bundle; 

public class TestMapActivity extends Activity { 
/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MapView mv=new MapView(this,256); 

    } 
} 

그리고 에뮬레이터를 실행할 때 내가 버그를 얻을 :

04-17 09:10:31.181: E/AndroidRuntime(595): FATAL EXCEPTION: main 
04-17 09:10:31.181: E/AndroidRuntime(595): java.lang.NoClassDefFoundError:   org.osmdroid.views.MapView 
04-17 09:10:31.181: E/AndroidRuntime(595): at  testmap.sagem.TestMapActivity.onCreate(TestMapActivity.java:17) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.Activity.performCreate(Activity.java:4465) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.os.Looper.loop(Looper.java:137) 
04-17 09:10:31.181: E/AndroidRuntime(595): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-17 09:10:31.181: E/AndroidRuntime(595): at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 09:10:31.181: E/AndroidRuntime(595): at java.lang.reflect.Method.invoke(Method.java:511) 
04-17 09:10:31.181: E/AndroidRuntime(595): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-17 09:10:31.181: E/AndroidRuntime(595): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-17 09:10:31.181: E/AndroidRuntime(595): at dalvik.system.NativeStart.main(Native Method) 
경로 -> 빌드 경로를 (둘 다 어쨌든, 같은 결과를 준)

그런 다음이 코드를 입력 구축에 추가

"MapView mv = new MapView (this, 256);"라고 주석을 달았습니다. 그것은 작동하므로 mapview를 인스턴스화 할 수없는 이유를 모르겠습니다.

이것에 대한 아이디어가 있으십니까?

감사합니다.

편집 : 의 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="testmap.sagem" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-sdk android:minSdkVersion="15" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TestMapActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 

는 main.xml에 파일 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
</LinearLayout> 

답변

2

변경 폴더 이름 "lib 디렉토리"를 "libs와"해당 폴더와 항아리의 충전 경로에 파일에 "libs와"폴더를 모든 jar 파일을 넣어. 나는 잘 모르지만 나는 그것이 효과가있을 것이라고 생각한다.

+1

우우. 신의 축복이 있습니다. 그게 효과가 있다고 생각하지는 않지만 그렇습니다. –

+0

이것은 나를 위해 작동하지 않았다. –

1

시도는 3.0.7를 사용하고 프로젝트를 청소합니다. 알려주세요. http://code.google.com/p/osmdroid/downloads/list

+0

글쎄, 해봤지만 같은 버그가 있었다. 또한 1.5.8 대신 slf4j-android-1.6.1-RC1.jar를 시도했지만 다시 같은 버그가 발생했습니다. –

+0

이 스레드를 확인하면 다음과 같습니다. http://stackoverflow.com/questions/9135284/cannot-access-resource -icons-running-with-osmdroid-android-3-0-7 다음과 같이 사용하는 것이 좋습니다. [jar 링크] (https://oss.sonatype.org/content/groups/public/org) /osmdroid/osmdroid-android/3.0.8-SNAPSHOT/osmdroid-android-3.0.8-20120208.220818-1.jar) – N3sh

+0

xml 파일을 추가 할 수도 있습니까? – N3sh