Простое приложение для Android с исключениями roboguice

У меня есть очень простое приложение, которое работает, но когда я добавляю roboguice, оно выдает

java.lang.RuntimeException: невозможно создать экземпляр приложения com.MyFirstApp.MyFirstApplication: java.lang.ClassNotFoundException: com.MyFirstApp.MyFirstApplication

Класс приложения:

public class MyFirstApplication extends RoboApplication {

    @Override
    protected void addApplicationModules(List<Module> modules) {
        //modules.add(new DefaultModule());
    }
}

Основная деятельность:

public class MainActivity extends RoboActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

манифест:

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.MyFirstApp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk 
        android:minSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name="MyFirstApplication">
        <activity
            android:name="com.MyFirstApp.Activities.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action 
                    android:name="android.intent.action.MAIN" />
                <category 
                    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Я поместил guice-2.0-no_aop.jar и roboguice-1.1.3.jar в папку с ресурсами и добавил их в путь сборки.

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


person Duncan Roosma    schedule 08.04.2012    source источник


Ответы (2)


Ну я узнал в чем проблема. я использовал SDK v17+, и в этой версии внешнюю библиотеку нужно поместить в папку «libs» и только в папку libs. так что все учебники, которые я нашел, они просто поместили в папку с ресурсами, где неправильно.

Ссылка на то, где я получил ответ, который искал: http://groups.google.com/group/roboguice/browse_thread/thread/474116b052050ae2

person Duncan Roosma    schedule 16.04.2012

Прежде всего, расширение от RoboApplication — это функция RoboGuice 1.x, вам действительно следует использовать RoboGuice 2.0 (где вам больше не нужно это делать). Теперь, для вашего исключения, действительно ли ваш класс приложения находится в com.MyFirstApp.MyApplication? Если нет, вам нужно будет обновить атрибут name, чтобы он соответствовал.

person dmon    schedule 08.04.2012
comment
Поскольку я использую 1.1.3, мне нужно расширить RoboApplication, верно? Также я на 100% уверен, что именно там он находится. - person Duncan Roosma; 08.04.2012
comment
Хорошо, сделал то, что вы предложили, и обновился до 2.0. приложение работает. но активность теперь выдает ошибку. без RoboActivity он работает с ним, он просто говорит: java.lang.RuntimeException: невозможно создать экземпляр активности ComponentInfo{com.MyFirstApp/com.MyFirstApp.Activities.MainActivity}: java.lang.ClassNotFoundException: com.MyFirstApp.Activities.MainActivity - person Duncan Roosma; 08.04.2012
comment
Roboguice 2.0 все еще находится в стадии бета-тестирования. Почему LordSauron должен его использовать? Я дал 2.0 два серьезных выстрела, потратил несколько дней на устранение неполадок, и даже после обращения за поддержкой на форумах проблемы остались нерешенными. Я все еще использую 1.1.1. - person Jeff Axelrod; 13.04.2012
comment
Что ж, вам в значительной степени придется использовать 2.0, если вы хотите использовать фрагменты (а если вы только начинаете, почему бы и нет?). Я признаю, что обновление с 1.1 было немного болезненным, но оно того стоило. - person dmon; 13.04.2012