web-dev-qa-db-ja.com

NoClassDefFoundError Androidプロジェクト

まず第一に、私はこのトピックについてたくさんの質問/回答があることを知っています、私はそれらのほとんどを読みましたが、それでもエラーが発生します:

05-17 02:57:06.522: E/AndroidRuntime(17073): Java.lang.NoClassDefFoundError: ar.com.package.Android.MainActivity

Eclipseを21から22に更新するまで、プロジェクトは問題なく機能しました。

私はできる限りのことを試みました。マニフェストを確認しました。プロジェクトをクリーンアップしました。ビルドパスを確認し、別のAndroidバージョンでアプリを試し、Javaコンプライアンスレベルを1.6(ライブラリも)に設定)など)。問題は何ですか。

これが私のマニフェストです、私はそれで何も悪いことを見つけることができませんでした:

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

<uses-feature
    Android:glEsVersion="0x00020000"
    Android:required="true"/> 

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

<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="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>

<permission
    Android:name="ar.com.package.Android.permission.MAPS_RECEIVE"
    Android:protectionLevel="signature"/>
<uses-permission Android:name="ar.com.package.Android.permission.MAPS_RECEIVE"/>

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/Theme.Sherlock.Light.DarkActionBar" 
    Android:hardwareAccelerated="true">


    <meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="my key"/>


    <activity
        Android:name="ar.com.package.Android.SplashScreen"
        Android:label="@string/app_name"
        Android:noHistory="true"
        Android:screenOrientation="portrait"
        Android:theme="@Android:style/Theme.Black.NoTitleBar"
        Android:windowSoftInputMode="stateHidden"
        >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        Android:name="ar.com.package.Android.MainActivity"
        Android:logo="@drawable/logo"
        Android:screenOrientation="portrait" 
        Android:windowSoftInputMode="stateHidden"
         >
    </activity>

    <activity
        Android:name="ar.com.package.Android.SearchForm"
        Android:label="@string/title_activity_search_form"
        Android:parentActivityName="ar.com.package.Android.MainActivity"
        >
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="ar.com.package.Android.MainActivity" />
    </activity>

</application>

</manifest>

どんな助けでも大歓迎です。私は研究を続けます、私が答えを得るならば、私はそれを投稿します。

編集

MainActivityコードは次のとおりです。

package ar.com.package.Android;

import Android.annotation.SuppressLint;
import Android.content.Intent;
import Android.os.Bundle;
import Android.support.v4.app.DialogFragment;
import Android.view.KeyEvent;
import Android.view.View;
import Android.widget.Toast;
import com.actionbarsherlock.view.*;
import com.google.Android.gms.common.ConnectionResult;
import com.google.Android.gms.common.GooglePlayServicesUtil;
import com.google.Android.gms.maps.CameraUpdateFactory;
import com.google.Android.gms.maps.GoogleMap;
import com.google.Android.gms.maps.SupportMapFragment;
import com.google.Android.gms.maps.model.LatLng;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnCloseListener;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnOpenListener;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

@SuppressLint("NewApi")
public class MainActivity extends SlidingFragmentActivity {

private SlidingMenu menu;
private Toast toast;
private long lastBackPressTime = 0;
private GoogleMap map;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // slidemenu
    setBehindContentView(R.layout.menu);

    setSlidingActionBarEnabled(false);

    menu = getSlidingMenu();
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setShadowWidthRes(R.dimen.shadow_width);
    menu.setShadowDrawable(R.drawable.shadow);
    menu.setBehindOffset(100);
    menu.setFadeDegree(0.35f);
    menu.setSlidingEnabled(false);

    menu.setOnCloseListener(new OnCloseListener() {
        @Override
        public void onClose() {
            menu.setSlidingEnabled(false);
        }
    });

    menu.setOnOpenListener(new OnOpenListener() {
        @Override
        public void onOpen() {
            menu.setSlidingEnabled(true);
        }
    });

    getSupportActionBar().setDisplayShowCustomEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(false);

    // ---slide menu

    map = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMap();

    // Getting Google Play availability status
    int status = GooglePlayServicesUtil
            .isGooglePlayServicesAvailable(getBaseContext());

    if (status != ConnectionResult.SUCCESS) {

        Toast.makeText(this, "Google Maps no esta disponible.",
                Toast.LENGTH_LONG).show();

    } else {


        map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
                -26.8175915814614, -65.22274105834958), 13));

        // Enabling MyLocation Layer of Google Map
        map.setMyLocationEnabled(true);
    }
}

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

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case Android.R.id.home:
        toggle();
        return true;

    case R.id.action_search:
        final int RESULT = 1;
        startActivityForResult(new Intent(MainActivity.this,
                SearchForm.class), RESULT);
        return true;

    case R.id.action_lineas:
        showDialogLineas();
        return true;

    case R.id.action_acercade:
        showDialogAcercaDe();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && !menu.isMenuShowing()) {

        if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
            toast = Toast.makeText(this,
                    "Presione Atrás nuevamente para cerrar",
                    Toast.LENGTH_LONG);
            toast.show();
            this.lastBackPressTime = System.currentTimeMillis();
        } else {
            if (toast != null) {
                toast.cancel();
            }
            super.onBackPressed();
        }

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

public void onResultadosClicked(View view) {
    showMenu();
}

public void showDialogLineas(){
    DialogFragment dialog = new LineasDialog();
    dialog.show(getSupportFragmentManager(), "Lineas");
}

public void showDialogAcercaDe(){
    DialogFragment dialog = new AcercaDeDialog();
    dialog.show(getSupportFragmentManager(), "Acerca");
}
}
10
VorteXavier

プロジェクト->プロパティ-> Javaビルドパス->注文とエクスポートに移動して、プロジェクトのAndroidプライベートライブラリがチェックされていることを確認してください使用している他のすべてのライブラリプロジェクト。

34
Krauxe