web-dev-qa-db-ja.com

java.lang.ClassNotFoundException:パス上にクラスが見つかりませんでした:dexpathlist

私は現在、純粋にネイティブなndkを使わなければならないプロジェクトに取り組んでいます。 Irrlichtエンジンのソースからhelloworldの例を実行してみるとうまくいきました。それから私はその例と同じフォーマットに従って私のプロジェクトでそれを使ってみます。しかし、私は得た:

03-14 01:40:05.308: E/AndroidRuntime(799): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/Android.app.POMActivity}: Java.lang.ClassNotFoundException: Didn't find class "Android.app.POMActivity" on path: DexPathList[[Zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]

私のプロジェクトを実行しながら。

これが私のmain.cppファイルです。

#include <Android/log.h>
#include <jni.h>
#include <Android_native_app_glue.h>
#include "Android_tools.h"
#ifdef _IRR_Android_PLATFORM_
void Android_main(Android_app* app)
{
__Android_log_print(4 , "pom" , "nothing");
}

#endif

android.mkの場合:

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_Android_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  Android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht Android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,Android/native_app_glue)

そして、私はAndroidManifest.xmlでActivity名を与えました:

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.irrlicht.example1"
    Android:versionCode="1"
    Android:versionName="1.0">
...
<application Android:icon="@drawable/irr_icon" Android:label="HelloWorldMobile1" Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" Android:debuggable="true">
        <activity Android:name="Android.app.POMActivity"
        Android:label="HelloWorldMobile1"
        Android:launchMode="singleTask"
        Android:configChanges="orientation|keyboardHidden"
        Android:screenOrientation="portrait"
        Android:clearTaskOnLaunch="true">
        <meta-data Android:name="Android.app.lib_name" Android:value="HelloWorldMobile1" />                     

私がここでしている間違いは何ですか?必要に応じて、フルコードを投稿します。

110
Karthik Sivam

私はすべての可能なオプションを試しましたが、結果はゼロです。最後に私は私にとって有用である正しい解決策を見つけました。インスタントランを無効にするには[ファイル] - > [設定] - > [ビルド] - [実行] - [デプロイメント] - > [インスタントラン] - >インスタントランのチェックボックスをオフにしますに移動します。アプリを1回実行すると、このapkファイルは正常に動作します。

74
Ashik Abbas

私は同様の問題を抱えていた、これが私の解決策です:

  1. プロジェクトを右クリックして、プロパティを選択します。
  2. 左側のメニューからJavaビルドパスを選択します。
  3. 注文とエクスポートタブを選択します。
  4. リストから、プロジェクトに追加したライブラリまたは外部jarがチェックされていることを確認します
  5. 最後に、プロジェクトをきれいにして実行します。

あなたは this 答えをチェックすることもできます。

64
mnsalim

これはあなたの場合は問題のようです。マニフェスト内のアクティビティの相対パスは正しくありません。

<activity Android:name="Android.app.POMActivity"

これを次のように置き換えます。

<activity Android:name=".POMActivity"

または

<activity Android:name="com.irrlicht.example1.POMActivity"
36
Sushil

デバイス上のアプリの削除とプロジェクトのクリーニングは私のために働きます

21
V. Kalyuzhnyu

私はただ見て問題を理解するべきです

デックスエラー

しかし、問題を解決するのに半日かかりました。
私はAndroid開発者ページの指示に従ってこれを修正します。 https://developer.Android.com/studio/build/multidex.html

まずこれをgradle.buildファイルに追加します。

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.Android.support:multidex:1.0.0'
 }

次に、Applicationクラスを拡張する(またはAndroidManifest.xmlでアプリケーションクラスを宣言するか、または上記のリンクの指示に従ってMultiDexApplicationクラスでattachBaseContext()関数を上書きします)。

以上で問題は解決しました。

21
Akash Bisariya

この例外は、レイアウトにカスタムビューがある場合にも発生する可能性があります。

<com.example.MyView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" />

また、ビューのパッケージ名を "com.example"から別のものに変更しますが、レイアウトでも変更することを忘れます。

19
petrnohejl

Clean ProjectRebuild Projectを試してください。

11

androidのスタジオ端末で./gradlew --stopコマンドを使用して解決しました。このコマンドを実行したら、プロジェクトをクリーンアップして再構築します。

11
Ali Gürelli
  1. ライブラリの順番を変更する
  2. クリーンで再構築
  3. 私のために働いた。

.

11
crazyjune

マルチデックスを有効にしている人のためにこれを書いてください

inside build.gradle

apply plugin: 'com.Android.application'

Android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.Android.support:appcompat-v7:+'
    compile 'com.google.Android.gms:play-services:+'
    compile 'com.Android.support:multidex:1.0.1'
}

以下のようにクラスEnableMultiDexを書きます。

import Android.content.Context;
import Android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

そしてAndroidManifest.xmlにこれを書いてくださいclassName Applicationタグの中

 <application
    Android:name="YourPakageName.EnableMultiDex"
    Android:hardwareAccelerated="true"
    Android:icon="@drawable/wowio_launch_logo"
    Android:label="@string/app_name"
    Android:largeHeap="true"
    tools:node="replace">
10
Manohar Reddy

プロジェクトが直前にコンパイルされていた場合は、次のようにしてキャッシュをクリアすることができます。

./gradlew clean

または

./gradlew cleanBuildCache

または窓用

gradlew cleanBuildCache

https://developer.Android.com/studio/build/build-cache.html

8
Romuald

私はこの問題に何度も直面し、それらはすべて無効にすることで解決されていますインスタントラン

8
mohnage7

プロジェクトをきれいにするだけです。わたしにはできる。

7

MultiDexApplicationを拡張するApplicationクラスをカスタマイズする必要はありません。代わりに、このようにすることができますAndroidManifest.xml

<application
Android:name="Android.support.multidex.MultiDexApplication"
Android:hardwareAccelerated="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">

そしてこれと一緒にbuild.gradle(Module:app)、

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

dependencies {
     ... 
     compile 'com.Android.support:multidex:1.0.2'
}

ありがとう。

6
Abdul Gaffar

マルチインデックスを使用している場合は、アプリケーションの代わりにMultiDexAppicationを使用してアプリケーションクラスを拡張し、5.0以下のAndroidに必要な以下のメソッドをオーバーライドします(5.0以上でマルチインデックスがサポートされるため)。

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(BaseApplication.this);
}

そして依存関係でこれを追加

compile 'com.Android.support:multidex:1.0.1'

フォルダ名をlibからlibsに変更するだけです。

それからあなたはあなたのプロジェクトのいくつかのエラーマークを見るでしょう、この権利を解決するためにクリックしてください>

Properties > Java Build Path > libraries

赤い印の付いたライブラリをすべて削除し、その後apply > ok >を--- プロジェクトをクリーンにします。多田は魔法を見ます:)

4
hemantsb

私はサムスンロリポップデバイス上でのみこのクラッシュを得ていました、そしてこれ ソリューション は私のために働きました。

dexOptions {
     preDexLibraries false
}

この質問は現在このクラッシュについてGoogleで最もランクの高い検索結果であり、上記の答えはどれも私にとっては役に立たなかったので、ここにこの回答を投稿しています。

3
blinkmacalahan

私の場合、この問題はKotlinが原因で発生しました。私の既存のコードには、Kotlinと書かれたクラスがありました。私はアプリを構築し、それがインストールされ、最初の活動がアプリを開くとすぐにクラッシュしました。 logcatでこのエラーが表示されていました。それから私はKotlinウェブサイトから私のKotlinバージョンをアプリgradleファイルで更新しました。アプリをもう一度ビルドすればうまくいきました。

3
Harry .Naeem

私は与えられた答えを試した後、私は私が私のメインライブラリに手動で使用しているライブラリを追加しなければならなかったという同じ例外の別の理由を見つけました

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >
Apply

このソリューションの前は、Eclipseの.Javaファイル内から "Fix Project setup"を使用していましたが、これはうまくいきませんでしたので、ここで手動で追加する必要があり、うまくいきました。

3

次の解決策は私のために働いた...

私は上記のすべてを試してみましたが、それでも私のアプリを実行させることはできませんでした。私は反応ネイティブアプリをgradle 4+とAndroid studioの最新版で走らせています。

私は反応ネイティブの実行 - アンドロイドを実行すると、それがMainApplicationクラスを見つけることができないと言って問題に失敗していたという問題がありました...すなわちClassNotFoundException

Gradle.propertiesを更新してコンパイラD8を使用すると、問題を解決できました。

追加した:

Android.enableD8 = true

私のgradle.propertiesに

ドキュメントの詳細はこちら: https://Android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

2
nkadu1

私の理解しているように私は私が出力からAPKをコピーしてSDカードに入れたときに私のアプリケーションは実行されませんインスタント機能のためにアップデートAndroidスタジオ2.1から2.3の後に問題を得る。この問題のために私はビルドオプションからAPKをビルドするアン​​ドロイドスタジオでAPKをビルドします。

1
user2306383

Ashik abbas (無効にするInstant Run)私のために働きますが、私はInstant Runを必要としています、ついに私は私に役立つ解決策を見つけました。無効にする--- minifyEnabledbuild.gradle(Module:app)debugブロックして無効にするminifyEnabled

debug {
            minifyEnabled false

        }
1
hofs

私は同じ誤りを持っていました、そして、いくつかの答えは初心者の問題について私を誤解させました。以下のように、カスタムビュー記述子に間違ったパッケージがありました。誰かに役立つことを願っています。

<com.my.app.wrong.package.MyActivity
    Android:id="@+id/myActivity"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginLeft="16dp"
    Android:layout_marginRight="16dp"
    Android:paddingTop="16dp"
    Android:paddingBottom="8dp"
    Android:gravity="left" />
1
lauksas

アプリグラドルファイルでminifyEnabledshrinkResourcesをtrueに有効にしている場合。 proguard-rules.proファイルに次の行を追加する必要があります。

-keepクラスcom.yourpackage_name。** {*; }

縮小は私たちのapkファイルからいくつかの重要なクラスが削除されたためです。

1
Naveen Kumar M

Gradle依存関係を削除した後にこのエラーが表示された場合は、マニフェストを確認し、その依存関係に対応するすべてのエントリを削除したことを確認してください。

1
dees91

私の場合、私のプロジェクトがandroidxのものを利用して設定されている間、私は古い名前空間ライブラリを使用しました。

解決策は、Android.support.design.widget.BottomNavigationViewコンポーネントをサポートライブラリから抜け出すための正しいコンポーネントcom.google.Android.material.bottomnavigation.BottomNavigationViewに置き換えることでした。

0
Artik

考えられる原因の1つは、Apps AndroidManifest.xmlファイル内のアクティビティのパスが正しくないことです。以下のように、相対パスでAndroidManifest.xmlにアクティビティを登録します。

<activity Android:name="<full_path>.ActivityName" />
0
Akki

私は同じ問題に直面していました。私は一日可能な限り全力を尽くしたが、何もうまくいかなかった。問題を引き起こしていた依存関係は、より低いコンパイルのsdk、target sdk、およびmin sdkを使用していました。プロジェクトのライブラリモジュールを作成し、すべてのソースをコピーして、SDKのバージョンとアプリケーションのSDKのバージョンを一致させました。そしてついにそれは魅力のように働いた。

0
PK Gupta

私は以前にこの問題を抱えていたので、ここでのコメントは過去に役に立ちましたが、今回はそうではありませんでした。私は自分のproguardの設定をチェックし、i 削除された次の行を書き、それからうまくいったのでproguardはこのエラーに関係している可能性があります。

 -optimizationpasses 5
        -overloadaggressively
        -repackageclasses ''
        -allowaccessmodification
        -dontskipnonpubliclibraryclassmembers
0
j2emanue

Android Intent Parcelableを非整列化するとクラスが見つかりません または Android E/Parcel un非整列化するとクラスが見つかりません(Samsung Tab 3のみ) 、ただしこれらのトピックからのアドバイスはありません。助けて頂きました。私はさらに解析可能なクラスを書き直しました。

0
CoolMind

私にとっては、私が署名付きAPKを作成した後にこの問題が発生しました。それを修正するために、Run/Build APKを使って新しいdebug apkを生成しました。その後、Run(cmd + r)はこのエラーがなくても機能します。

0
passatgt