2012-04-17 7 views
0

私はプロジェクトにOSMdroidを使用しようとしていますが、私は全く単純なコードを作ることができません。 さて、数日前に地図などを表示することができましたが、MapViewのインスタンス化もできません。 コードをsipmlest形式に縮小しました。 私は日食で働いています。そして、それらにクラスパスファイルに行を追加することで、プロジェクトでOsmDroid MapViewをインスタンス化することができません

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

または右クリックしてを私はosmdroid-アンドロイド-3.0.5.jarとSLF4J - アンドロイド-1.5.8.jarをダウンロードして、私はそれらを含めPath->パスを構築するために追加のビルド(両方ともとにかく、同じ結果を与えた)

その後、私はこのコードを入力した:

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);」とコメントを付けると、それは動作するので、マップビューをインスタンス化できない理由は分かりません。

これに関するご意見はありますか?

ありがとうございました。

EDIT: の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ファイル:3.0.7を使用してプロジェクトをきれいにする

<?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

フォルダ名を "libs"に変更し、すべてのjarファイルをそのフォルダに入れ、jarファイルのチャージパス を "libs"フォルダに配置します。私は確信が持てませんが、うまくいくと思います。

+1

Ooooh。神のお恵みがありますように。それはうまくいくとは思っていませんでしたが、そうしています。 –

+0

これは私には役に立たなかった。 –

1

してみてください。 お知らせください。 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 [link to 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