NoClassDefFoundError для класса в пакете приложения - PullRequest
1 голос
/ 08 марта 2019

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

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): Отказ от повторного инициирования для ранее неудачного класса java.lang.Class I / art (22555): Отказ от повторного инициирования для ранее неудачного класса java.lang.ClassI / 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

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

1 Ответ

2 голосов
/ 08 марта 2019

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

...