Ниже моя деятельность:
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
Это не имеет смысла для меня, один класс инициализирован, но другой класс в той же папке дает мне ошибку.
В других подобных вопросах люди сталкивались с этой ошибкой во внешних библиотеках, которые они пытались импортировать, и это не помогло мне.
В моем DataProviderClassHelper
я фактически реализовывал интерфейс ExternalLibInterface
который был предоставлен в заглушке внешней библиотеки.
Поскольку он был provided
, код успешно скомпилировался, но этот факт был недоступен для меня во время выполнения. Чтобы иметь возможность получить доступ к реальной информации в системе, мне нужно было добавить какой-то специфический для библиотеки компонент в мой AndroidManifest.xml
. Таким образом, решение может не совсем помочь всем, но оно поможет людям определить причину проблемы.
В моем случае это было связано с недоступностью ExternalLibInterface
во время выполнения.