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

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

私は現在、純粋にネイティブの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 #include #include #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 nameを与えました:

...                 

私がここでやっている間違いは何ですか? もし必要なら、私は完全なコードを投稿します。

4 Comments
Siddharth_Vyas 03/14/2014
外部のjarファイルを使用していますか?
Karthik Sivam 03/14/2014
@SiddharthVyasいいえ、私はこれで外部のjarファイルを使用していません。
1 Igor Ganapolsky 08/09/2016
あなたのアプリケーションはマルチデクスですか? もしそうなら、それは問題を説明します。
j2emanue 07/05/2017
私が署名したAPKをしたとき、このエラーは起こりませんでした。 ちょうどデバッグ

13 Answers


mnsalim 05/23/2017.

私も同様の問題を抱えていました。私の解決策は次のとおりです。

  1. プロジェクトを右クリックし、[ Properties ]を選択しProperties
  2. 左側のメニューからJava Build Pathを選択しJava Build Path
  3. [ Order and Export ]タブを選択します。
  4. リストから、プロジェクトに追加したライブラリまたは外部ジャーがcheckedされていることをchecked
  5. 最後に、プロジェクトをクリーン&実行します。

この回答を確認することもできます。

4 comments
1 FoxDonut 11/06/2016
これが問題の正しい解です。 私は上記と同じエラーで私のlibgdxゲームでこれをテストしました。 私は私の電話(samsung galaxy S6)で生成されたログを使って、これらのエラーを見つけました。 このソリューションを適用すると、すべての問題が解決されました。
2 Zin Min 03/25/2017
私はプロジェクトの右クリックからプロパティを見つけることができません。 私は愚かなことがあります。 :(
2 user3036320 04/19/2017
アンドロイドスタジオのソリューションを表示してください...
2 Skyler 07/08/2017
私はいずれかのプロパティを見つけることができない、誰もがリストされたページに移動する方法を把握

Sushil 03/14/2014.

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

 

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

 

または

 
1 comments
1 Karthik Sivam 03/14/2014
私は両方を試しました、それは同じ例外を示しています。

Akash Bisariya 03/06/2017.

私はちょうど見て問題を理解する必要があります

dex errors

しかし、問題を解決するには半日かかりました。
私はアンドロイドデベロッパーのページの指示に従ってこれを解決します: 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アプリケーションクラスを宣言するか、 override attachBaseContext()関数をoverride attachBaseContext() 、上のリンクの指示に従ってMultiDexApplicationクラスを使用します。

それだけで問題は解決しました。

4 comments
1 milosmns 08/30/2016
マルチデックスの追加は、参照カウントの制限(56k)に合格したときにのみ有効で、Lollipopの前ではvery不安定でvery信頼性がありveryん。 これは、最後の手段として問題を解決するために使用する必要があります。
Akash Bisariya 08/30/2016
それでは、あなたにしたがった解決策は何でしょうか
milosmns 08/30/2016
私は、マルチデックスが、それが助けてくれるよりも多くのトラブルを引き起こしていると言っています。デベロッパーのウェブサイトに明示されています。 もし私がいたら私は答えを探していないだろうか?
Akash Bisariya 08/30/2016
情報をお寄せいただきありがとうございます。良い解決策を見つけたらここで更新してください。大きな助けになるでしょう。

V. Kalyuzhnyu 07/07/2016.

デバイス上のアプリの削除と私のためのプロジェクトワークのクリーニング


crazyjune 06/13/2014.
  1. binフォルダを削除する
  2. ライブラリの順序を変更する
  3. きれいにして再構築する

私のために働いた。


Ali Gürelli 10/13/2016.

私はそれを使って解決しました: ./gradlew --stopアンドロイドスタジオ端末の./gradlew --stopコマンド。 このコマンドを実行した後、プロジェクトをクリーンにして再構築します。


Redman 01/05/2017.

multidexを持っている人がこれを書くことを可能にする

内部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ようにEnableMultiDexクラスを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タグ内に書き込みます

 

Ashik Abbas 07/26/2017.

すべての可能なオプションを試しましたが、結果はゼロです。 最後に私は私に役立つ正しい解決策を見つけました。 インスタント実行を無効にするにはファイル→設定→ビルド、実行、展開→インスタント実行→即時実行のチェックボックスをオフにします 。 アプリケーションを一度実行すると、このapkファイルは正常に動作します。


Walking Code 05/05/2014.

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

次に、このエラーを解決するために、プロジェクトにいくつかのエラーマークが表示されます。プロジェクト>

Properties > Java Build Path > libraries

赤い印が付いたライブラリをすべて削除し、 clean your projectclean your project後にapply > ok > clean your project 。 タダは魔法を見る:)

1 comments
Shubham 10/27/2015
フォルダ名はlibsのみです

Tere Bentikh 09/29/2015.

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

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"を使用しましたが、これはうまくいかなかったので、ここで手動で追加しなければなりませんでした。


dees91 11/21/2016.

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

1 comments
Petter Friberg 11/21/2016
複数の質問に同じ回答を加えないでください。 最良のものに答え、残りを重複としてフラグを立てる。 複数の質問に重複した回答を追加することは容認できますか?を参照してください

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

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

依存関係でこれを追加する

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

Shivegeeky 06/23/2017.

私の要求に応じて、私は出力からAPKをコピーしてsdcardに入れたときにアプリケーションが実行されないインスタント機能のため、アンドロイドスタジオ2.1から2.3へのアップデート後に問題が発生します。 この問題のために、私はアンドロイドスタジオでapkを構築するビルドオプションからapkをビルドします。

Related questions

Hot questions

Language

Popular Tags