2012-05-13 3 views
2

Я прочитал около сотни проблем одной и той же категории, но никто не помог. У меня было рабочее приложение, затем было реорганизовано имя пакета, оно было скомпилировано и запущено. Через неделю я вернусь к работе над ним и получаю ClassNotFoundException при запуске. Хуже того, если я проверил предыдущую фиксацию из репо (один перед любым рефакторингом, где все сработало), этот проект вызывает ту же ошибку при запуске (за исключением другого имени пакета).Невозможно выполнить следующее: ClassNotFoundException

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

Я не уверен, какой код был бы полезен для отладки, но вот объявление в мой манифест и вывод logcat. Если что-то еще может быть полезно, дайте мне знать. Я действительно потерялся здесь.

Крушение:

E/AndroidRuntime( 515): FATAL EXCEPTION: main 
E/AndroidRuntime( 515): java.lang.RuntimeException: Unable to instantiate service 
co.mosic.mosic.CommunicationService: java.lang.ClassNotFoundException: co.mosic.mosic.CommunicationService 
E/AndroidRuntime( 515): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2237) 
E/AndroidRuntime( 515): at android.app.ActivityThread.access$1600(ActivityThread.java:123) 
E/AndroidRuntime( 515): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) 
E/AndroidRuntime( 515): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 515): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime( 515): at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime( 515): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 515): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime( 515): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime( 515): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime( 515): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 515): Caused by: java.lang.ClassNotFoundException: co.mosic.mosic.CommunicationService 
E/AndroidRuntime( 515): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
E/AndroidRuntime( 515): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
E/AndroidRuntime( 515): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
E/AndroidRuntime( 515): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2234) 
E/AndroidRuntime( 515): ... 10 more 

Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="co.mosic.mosic" 
    android:versionCode="1" 
    android:versionName="1.0" > 

... 

<service 
    android:name=".CommunicationService" > 
    <intent-filter> 
     <action android:name="co.mosic.mosic.MStcServiceInet" /> 
    </intent-filter> 
</service> 
+0

Все исправлено! Хотя я действительно не уверен. Последнее, что исправлено, это изменение моей папки «lib» на «libs», но ранее было названо «lib». Я тоже недавно изменил свой компилятор Java, но не могу вспомнить точный таймфрейм. Может быть, это сортировщик о имени папки в банке? На самом деле я потратил еще несколько часов на реорганизацию, очистку, перестройку ... – jarvisteve

+0

Да, я думаю, что 'libs' - правильное имя для скриптов' ant'. –

ответ

4

Из-за недавнего обновления плагина ADT библиотечная папка должна была быть изменена на «libs» вместо lib. Недавно я наткнулся на это несколько раз.

0

Из верхней части моей головы, наиболее распространенная причина для этого типа ошибки отсутствует proguard.flags файл.

Proguard будет работать на вашем коде и обфускации всех имен. Если вы не указали флаг -keep для своего класса обслуживания, его имя также будет изменено, и, следовательно, ОС не сможет его найти.

Таким образом, я предполагаю, что вы забыли сделать правильный файл конфигурации proguard, который объяснил бы, почему он работал, но не сейчас.

+0

Спасибо, это была отличная идея. Это не устранило проблему, хотя я попробовал «-keep public class CommunicationService» и «-keep public class co.mosic.mosic.CommunicationService'. – jarvisteve

Смежные вопросы