Android ClassNotFoundException

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

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

E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader [email protected]

Теперь это приложение больше года и два дня назад у меня было два отдельных пользователя, которые связались со мной по поводу этой проблемы, одна из которых касается HTC Wildfire (2.1) и Samsung Galaxy S (?). Теперь я не могу воссоздать эту проблему на своих устройствах (2.2 и 1.6) или эмулятор (2.1) и не могу понять, почему этот класс не может быть найден загрузчиком классов. Я потратил некоторое время на поиски в Интернете, и надеюсь, что у кого-то есть указатели! Похоже, что когда загружается активность, которая при настройке contentView старается раздуть пользовательский вид View, называемый 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 [email protected]
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", которая может быть решена путем переустановки, и я попросил пользователей, у которых возникла проблема, попробуйте (что не имеет значения). Также кажется, что когда проблема встречается (которая при первом использовании), она будет постоянной.

Ответ 1

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

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

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

Ответ 2

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

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

Надеюсь, что это поможет...

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

До:

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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