NoClassDefFoundError для класса в пакете приложения

1

Ниже моя деятельность:

com.domain.app.SampleActivity.java

public class SampleActivity extends Activity {

  @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.sample_layout);

        DataProviderClass dataProvider = new DataProviderClass();
    }
}

com.domain.app.anotherFolder.DataProviderClass.java

public class DataProviderClass {
  private DataProviderClassHelper helper = new DataProviderClassHelper();
}

com.domain.app.anotherFolder.DataProviderClassHelper.java

public class DataProviderClassHelper implements ExternalLibInterface {
  public DataProviderClassHelper() {
    }
}

Ниже приведены журналы:

I/art (22555): отклонение повторного инициирования для ранее неудачного класса java.lang.Class I/art (22555): отклонение повторного инициирования для ранее неудачного класса java.lang.Class I/art (22555): отклонение re-init для ранее неудачного класса java.lang.Class I/art (22555): отклонение повторного инициирования для ранее неудачного класса java.lang.Class I/art (22555): отклонение повторного инициирования для ранее неудачного класса java.lang.Class E/AndroidRuntime (22555): процесс: com.domain.app, PID: 22555 E/AndroidRuntime (22555): java.lang.NoClassDefFoundError: com.domain.app.anotherFolder.DataProviderClassHelper.java E/AndroidRuntime (22555): в com.domain.app.anotherFolder.DataProviderClass.java. (DataProviderClass.java:77) E/AndroidRuntime (22555): в com.domain.app.SampleActivity..onCreate(SampleActivity.java:64) W/ActivityManager (1103): принудительное завершение операции 1 com.domain.app/.SampleActivity

Это не имеет смысла для меня, один класс инициализирован, но другой класс в той же папке дает мне ошибку.
В других подобных вопросах люди сталкивались с этой ошибкой во внешних библиотеках, которые они пытались импортировать, и это не помогло мне.

Теги:
noclassdeffounderror

1 ответ

2
Лучший ответ

В моем DataProviderClassHelper я фактически реализовывал интерфейс ExternalLibInterface который был предоставлен в заглушке внешней библиотеки.
Поскольку он был provided, код успешно скомпилировался, но этот факт был недоступен для меня во время выполнения. Чтобы иметь возможность получить доступ к реальной информации в системе, мне нужно было добавить какой-то специфический для библиотеки компонент в мой AndroidManifest.xml. Таким образом, решение может не совсем помочь всем, но оно поможет людям определить причину проблемы.
В моем случае это было связано с недоступностью ExternalLibInterface во время выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню