java.lang.ClassNotFoundException: Không tìm thấy lớp trên đường dẫn: dexpathlist

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

Tôi hiện đang làm việc trên một dự án mà tôi phải sử dụng thuần túy ndk. Nó hoạt động khi tôi thử chạy một ví dụ helloworld từ nguồn động cơ Irrlicht. Sau đó, tôi thử sử dụng nó trong dự án của tôi sau cùng một định dạng của ví dụ đó. Nhưng tôi có:

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

trong khi chạy dự án của tôi.

Đây là tập tin main.cpp của tôi:

#include #include #include #include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
} 

#endif

trong 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) 

Và tôi đã đặt tên Activity trong AndroidManifest.xml:

...                 

Tôi đang làm gì ở đây? Tôi sẽ đăng mã đầy đủ nếu cần.

4 Comments
Siddharth_Vyas 14/03/2014
Bạn có đang sử dụng bất kỳ tệp jar bên ngoài nào không?
Karthik Sivam 14/03/2014
@SiddharthVyas Không, tôi không sử dụng các tệp jar bên ngoài trong này.
1 Igor Ganapolsky 09/08/2016
Ứng dụng của bạn có đa dexed không? Nếu vậy, thì điều đó giải thích vấn đề.
j2emanue 05/07/2017
khi tôi thực hiện một apk đã ký, lỗi này không xảy ra. chỉ gỡ lỗi

13 Answers


mnsalim 23/05/2017.

Tôi đã có một vấn đề tương tự, đây là giải pháp của tôi:

  1. Nhấp chuột phải vào dự án của bạn và chọn Properties .
  2. Chọn Java Build Path từ menu bên trái.
  3. Chọn tab Order and Export .
  4. Từ danh sách, hãy đảm bảo rằng các thư viện hoặc các jars bên ngoài mà bạn đã thêm vào dự án của bạn được chọn.
  5. Cuối cùng, làm sạch dự án của bạn và chạy.

Bạn cũng có thể kiểm tra câu trả lời này .

4 comments
1 FoxDonut 06/11/2016
Đây là giải pháp đúng cho câu hỏi. Tôi đã thử nghiệm này với trò chơi libgdx của tôi với các lỗi tương tự được tìm thấy như ở trên. Tôi đã tìm thấy những lỗi này bằng cách sử dụng nhật ký được tạo bằng điện thoại của tôi (samsung galaxy S6). Khi tôi áp dụng giải pháp này, tất cả các vấn đề của tôi đã được giải quyết.
2 Zin Min 25/03/2017
Tôi không thể tìm thấy Thuộc tính từ nhấp chuột phải của dự án. Có thể tôi là ngu ngốc. :(
2 user3036320 19/04/2017
vui lòng hiển thị giải pháp studio android ...
2 Skyler 08/07/2017
Tôi không thể tìm thấy thuộc tính, bất kỳ ai cũng tìm ra cách điều hướng đến trang được liệt kê

Sushil 14/03/2014.

Điều này có vẻ là vấn đề trong trường hợp của bạn. Đường dẫn tương đối của hoạt động của bạn trong tệp kê khai không chính xác:

 

thay thế bằng:

 

hoặc là

 
1 comments
1 Karthik Sivam 14/03/2014
Tôi đã thử cả hai, nó cho thấy cùng một ngoại lệ.

Akash Bisariya 06/03/2017.

Tôi nên hiểu vấn đề bằng cách chỉ nhìn thấy

dex errors

Nhưng phải mất nửa ngày để khắc phục vấn đề.
Tôi khắc phục điều này bằng cách làm theo hướng dẫn của trang dành cho nhà phát triển Android: https://developer.android.com/studio/build/multidex.html

Trước tiên hãy thêm tệp này vào tệp gradle.build:

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

    // Enabling multidex support.
    multiDexEnabled true
}

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

Sau đó mở rộng lớp Ứng dụng (hoặc khai báo lớp ứng dụng trong AndroidManifest.xml hoặc override attachBaseContext() ) với lớp MultiDexApplication như được hướng dẫn trên liên kết ở trên.

Đó là tất cả và nó giải quyết được vấn đề.

4 comments
1 milosmns 30/08/2016
Việc thêm multi-dex chỉ hữu ích khi bạn vượt qua giới hạn số lượng tham chiếu (56k), và nó very không ổn định và very không đáng tin cậy trước Lollipop. Điều này nên được sử dụng để khắc phục các vấn đề như một phương sách cuối cùng.
Akash Bisariya 30/08/2016
thì giải pháp nào theo bạn
milosmns 30/08/2016
Tôi chỉ nói rằng multi-dex gây ra nhiều rắc rối hơn nó giúp, được ghi rõ trên trang web của nhà phát triển. Tôi sẽ không ở đây tìm kiếm câu trả lời nếu tôi có một câu trả lời, đúng không?
Akash Bisariya 30/08/2016
Ok cảm ơn cho thông tin, xin vui lòng cập nhật ở đây nếu bạn tìm thấy một giải pháp tốt, nó sẽ là một trợ giúp tuyệt vời.

V. Kalyuzhnyu 07/07/2016.

Việc xóa ứng dụng trên thiết bị và làm sạch các công trình dự án cho tôi


crazyjune 13/06/2014.
  1. xóa thư mục bin
  2. thay đổi thứ tự thư viện
  3. sạch sẽ và xây dựng lại

đã làm cho tôi.


Ali Gürelli 13/10/2016.

tôi đã giải quyết nó bằng cách sử dụng: ./gradlew --stop lệnh trong thiết bị đầu cuối studio android. Sau khi thực hiện lệnh này sau đó làm sạch và xây dựng lại dự án.


Redman 05/01/2017.

Đối với bất kỳ ai đang bật multidex, hãy viết điều này

bên trong 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'
} 

viết một lớp EnableMultiDex như dưới đây

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();

    }
} 

và trong AndroidManifest.xml hãy viết className này bên trong thẻ Ứng dụng

 

Ashik Abbas 26/07/2017.

Tôi đã thử tất cả các tùy chọn có thể nhưng kết quả bằng không. Cuối cùng tôi tìm thấy giải pháp đúng là hữu ích cho tôi. Chỉ cần đi để tắt tính năng Instant Run Đi tới File -> Settings -> Build, Execution, Deployment -> Instant Run -> Bỏ chọn hộp kiểm để chạy tức thời . Chạy ứng dụng của bạn một lần và tệp APK này hoạt động chính xác ..


Walking Code 05/05/2014.

Chỉ cần thay đổi tên thư mục của bạn từ lib thành libs ,

Sau đó, bạn sẽ thấy một số dấu lỗi trong dự án của bạn, để giải quyết quyền nàyBấm vào dự án>

Properties > Java Build Path > libraries :

Hủy bỏ tất cả các thư viện với các dấu đỏ trên đó, sau đó apply > ok > sau đó clean your project . TADA thấy sự kỳ diệu :)

1 comments
Shubham 27/10/2015
tên thư mục chỉ là lib

Tere Bentikh 29/09/2015.

sau khi tôi đã thử các câu trả lời cho trước, tôi phát hiện ra một lý do khác cho cùng một ngoại lệ, rằng tôi phải thêm thư viện tôi đang sử dụng thủ công vào thư viện chính của mình thông qua

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 

trước giải pháp này, tôi đã sử dụng "Fix Project setup" từ bên trong file .java trong nhật thực, nhưng điều này không có tác dụng, vì vậy tôi phải thêm nó theo cách thủ công ở đây và nó đã làm việc


dees91 21/11/2016.

Nếu bạn nhận được lỗi này sau khi xóa một số phụ thuộc gradle, hãy kiểm tra tệp kê khai của bạn và đảm bảo rằng bạn đã xóa tất cả các mục tương ứng với phụ thuộc đó.

1 comments
Petter Friberg 21/11/2016
Vui lòng không thêm cùng một câu trả lời cho nhiều câu hỏi. Trả lời câu trả lời hay nhất và gắn cờ phần còn lại là trùng lặp. Xem Có thể chấp nhận thêm câu trả lời trùng lặp cho một số câu hỏi không?

Khi bạn đang sử dụng multidex, hãy thử mở rộng lớp ứng dụng của bạn với MultiDexAppication thay vì Ứng dụng và ghi đè phương thức dưới đây yêu cầu cho Android dưới 5.0 (vì 5.0 trở lên hỗ trợ cho multidex)

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

và trong các phụ thuộc thêm điều này

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

Shivegeeky 23/06/2017.

Theo understading của tôi tôi nhận được vấn đề sau khi cập nhật android studio 2.1 đến 2.3 do tính năng tức thì ứng dụng của tôi sẽ không chạy khi tôi sao chép apk từ đầu ra và đưa vào sdcard. Đối với vấn đề này tôi xây dựng các apk từ tùy chọn xây dựng làm xây dựng apk trong studio android.

Related questions

Hot questions

Language

Popular Tags