Android ClassNotFoundException

У меня проблема с одним из моих приложений, и мне было интересно, может ли кто-нибудь дать мне представление о том, что может быть причиной этого.

Я получаю ClassNotFoundException , важная строка ниже

E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0 

Теперь это приложение уже более года и 2 дня назад у меня было два разных пользователя, которые связались со мной по этой проблеме, одна – по HTC Wildfire (2.1) и Samsung Galaxy S (?). Теперь я не могу воссоздать эту проблему на своих устройствах (2.2 и 1.6) или эмулятор (2.1) и не могу понять, почему этот класс не может быть найден загрузчиком классов. Я потратил некоторое время на поиски в Интернете, и надеюсь, что у кого-то есть некоторые указатели! Похоже, что когда загружается активность, когда при настройке contentView он пытается раздуть пользовательский вид, называемый GoBoardView, который расширяет класс View, это просто делает простой рисунок холста и не использует никаких сторонних библиотек или каких-либо Другие классы, которые имели бы столкновение packagename или что-то еще.

Пожалуйста помоги! На всякий случай, это проблема сборки, я обновляю все свои SDK и ADT через eclipse, поскольку он строит против 1.6 и использует старый ADT, но я понятия не имею, поможет ли это просто подумать, стоит ли попробовать. Любые советы были бы очень благодарны! (См. Ниже EDIT)

 E/AndroidRuntime(21982): java.lang.RuntimeException: Unable to start activity ComponentInfo{couk.doridori.goigoFull/couk.doridori.goigoFull.Board}: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596) E/AndroidRuntime(21982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621) E/AndroidRuntime(21982): at android.app.ActivityThread.access$2200(ActivityThread.java:126) E/AndroidRuntime(21982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932) E/AndroidRuntime(21982): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(21982): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime(21982): at android.app.ActivityThread.main(ActivityThread.java:4603) E/AndroidRuntime(21982): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(21982): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) E/AndroidRuntime(21982): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime(21982): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:407) E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) E/AndroidRuntime(21982): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) E/AndroidRuntime(21982): at android.app.Activity.setContentView(Activity.java:1629) E/AndroidRuntime(21982): at couk.doridori.goigoFull.Board.onCreate(Board.java:31) E/AndroidRuntime(21982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544) E/AndroidRuntime(21982): ... 11 more E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0 E/AndroidRuntime(21982): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) E/AndroidRuntime(21982): at android.view.LayoutInflater.createView(LayoutInflater.java:466) E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) E/AndroidRuntime(21982): ... 22 more 

РЕДАКТИРОВАТЬ

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

 W/ActivityManager( 1222): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { flg=0x20000 cmp=couk.doridori.goigoFull/.Games } 

Что вполне объяснимо – проблема в том, что я не знаю, где эта деятельность может быть запущена из того, где она использует контекст неактивности, поэтому я немного озадачен, думая, что это может быть какая-то многозадачность, как причуда, и ее возвращение на передний план чего-либо . Это может, по-видимому, вызвать проблемы с classLoader. Если это происходит на телефоне пользователей, я не вижу, почему я не могу воспроизвести это (и большинство других пользователей тоже не могут).

Другая вещь, которую я нашел через интересные ссылки, – некоторые люди столкнулись с проблемами из-за «неправильной установки apk», которую можно решить путем переустановки, и я попросил пользователей, у которых возникла проблема, попробовать Не имеет значения). Также кажется, что когда проблема встречается (которая используется при первом использовании), она будет постоянной.

Solutions Collecting From Web of "Android ClassNotFoundException"

Я не могу не заметить, что ваше название деятельности – couk.doridori.goigoFull.Board но ваш отсутствующий пользовательский класс View – это couk.doridori.goigo.customUI.GoBoardView … похоже, что у вас могут быть два разных пакета (goigo vs goigoFull).

Вы случайно делаете умные вещи с библиотечными проектами? Вам нужно быть очень осторожным с полностью квалифицированными именами классов в коде и в макете xml …

(Если нет, добавьте дополнительную информацию о настройке вашего проекта, а также вставьте свой XML-макет, который укладывается в макету flock)

Я уже обсуждал эту проблему здесь: Android: не удалось создать экземпляр активности / ClassNotFoundException, но мы не смогли найти определенный ответ … Однако ответ Джона Дж. Смита о правильном использовании Контекста интересен.

Некоторые люди также решили свою проблему в этой теме и дают некоторые идеи.

Надеюсь это поможет…

(Кстати, я рад видеть другого программиста Go!)

Я добавил пользовательский макет и начал просматривать сообщения ClassNotFoundException только после подписания пакета приложений, но сборка разработки работала нормально. Я использовал ProGuard, и новый макет, который я добавил, не был включен в список «исключить» в конфигурации ProGuard. Я включил пользовательский макет в список исключений ProGuard и исправил эту проблему для меня.

Иногда я сталкиваюсь с этой проблемой при разработке, после изменения имен пакетов. Быстрая очистка проекта исправляет проблему для меня.

Есть еще одна вещь, которая вызывает «ClassNotFoundException». Некоторое время назад проект андроида начал использовать каталог libs для зависимостей. Если jar находится в каталоге libs, он автоматически находится в пути к классу, поэтому вам не нужно добавлять его в настройки проекта. Однако банки в «libs» не могут подключаться к источникам (что смешно). Поэтому, если вы хотите прикрепить источник, вы перемещаете банку из «libs» в «lib», и вы добавляете ее в путь к классам. Вы можете прикрепить источник. Но я несколько раз видел, что это вызывает ClassNotFoundExceptions на моих классах. Проблема с перемещением фляги.

Я была такая же проблема. В итоге проблема заключалась в том, что просто отсутствовали таблицы в макете xml.

До:

  <org.osmdroid.views.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="0dip" tilesource="MapquestOSM" android:layout_weight="1" /> 

Затем с отступом классNotFoundException никогда не выглядел снова, и карта показала правильно:

  <org.osmdroid.views.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="0dip" tilesource="MapquestOSM" android:layout_weight="1" /> 

Мой опыт может быть в том, что sdk android был обновлен, и ссылка на библиотеку поддержки нуждается в обновлении. Просто перейдите к настройкам проекта> android и снова обратитесь в библиотеку поддержки.

Для меня проблема была одна маленькая Caps-Fault. Я искал свой код часами, когда все было в порядке. Некоторое время я заглянул в мои .xml-Files, и вот он:

В java-файлах я использовал ViewPager и в одном неприятном маленьком фрагменте xml я потерял свои кепки и набрал viewPager по ошибке. Очевидно, что этого не удалось найти …

Это связано с новой версией eclipse … удалите все внешние зависимости из пути построения и добавьте его снова, используя вкладку «Проекты -> свойства -> builspath ->». Теперь добавьте обратно всю библиотеку зависимостей и выберите все компоненты, нажав на них на вкладке «Заказ» и «Проект» в проекте-> properties-> builspath-. Это будет нормально работать!