Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid/RoboGuice/Maven: ClassNotFoundException in Eclipse, but not from Maven command line
    text
    copied!<p>I have a class that handles Guice bindings. It is the very first thing that needs to run, called ApplicationAutoworkout.java.</p> <pre><code>package com.redsoft.android.autoworkout; import java.util.List; import roboguice.application.RoboApplication; import com.google.inject.Module; import com.redsoft.android.autoworkout.service._ModuleQueryFor; import com.redsoft.android.autoworkout.service._ModuleService; import com.redsoft.android.autoworkout.ui._ModuleUi; public class ApplicationAutoworkout extends RoboApplication { private Module testModule; @Override protected void addApplicationModules(List&lt;Module&gt; modules) { modules.add(new _ModuleUi(this.getApplicationContext())); modules.add(new _ModuleService(this.getApplicationContext())); modules.add(new _ModuleQueryFor()); if (testModule!=null)modules.add(testModule); super.addApplicationModules(modules); } //Allows the testModule to be added during tests public void setModule(Module module) { this.testModule = module; } } </code></pre> <p>This class, for whatever reason, cannot be found by the Android emulator when it is built/deployed from eclipse</p> <pre><code>09-05 03:43:42.745: ERROR/AndroidRuntime(843): FATAL EXCEPTION: main 09-05 03:43:42.745: ERROR/AndroidRuntime(843): java.lang.RuntimeException: Unable to instantiate application com.redsoft.android.autoworkout.ApplicationAutoworkout: java.lang.ClassNotFoundException: com.redsoft.android.autoworkout.ApplicationAutoworkout in loader dalvik.system.PathClassLoader[/data/app/com.redsoft.android.autoworkout-2.apk] 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread.access$3000(ActivityThread.java:125) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.os.Handler.dispatchMessage(Handler.java:99) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.os.Looper.loop(Looper.java:123) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at java.lang.reflect.Method.invokeNative(Native Method) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at java.lang.reflect.Method.invoke(Method.java:521) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at dalvik.system.NativeStart.main(Native Method) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): Caused by: java.lang.ClassNotFoundException: com.redsoft.android.autoworkout.ApplicationAutoworkout in loader dalvik.system.PathClassLoader[/data/app/com.redsoft.android.autoworkout-2.apk] 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.Instrumentation.newApplication(Instrumentation.java:942) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644) 09-05 03:43:42.745: ERROR/AndroidRuntime(843): ... 11 more </code></pre> <p>However, if I run this from the command line:</p> <pre><code>mvn clean process-classes android:dex android:apk android:deploy </code></pre> <p>everything works. What's going on in Eclipse that keeps Android from finding the class?</p> <p>EDIT: Here's the AndroidManifest.xml.</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;manifest package="com.redsoft.android.autoworkout" android:versionCode="0" android:versionName="0.0.1-SNAPSHOT" xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;uses-sdk android:targetSdkVersion="7" android:minSdkVersion="7"&gt;&lt;/uses-sdk&gt; &lt;application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:name="ApplicationAutoworkout"&gt; &lt;activity android:label="@string/app_name" android:name=".ui.ActivityMain"&gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; &lt;/activity&gt; &lt;activity android:name=".ui.profile.ActivityProfile"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.routine.ActivityRoutine"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.train.ActivityTrain"&gt;&lt;/activity&gt;&lt;activity android:name=".ui.exercise.ActivityExercise"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.exercise.ActivityViewExercise"&gt;&lt;/activity&gt;&lt;activity android:name=".ui.exercise.ActivityAddEditExercise"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.profile.ActivityAddProfile"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.profile.ActivityEditProfile"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.routine.ActivityRoutineView"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.routine.ActivityRoutineEdit"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.routine.ActivityRoutineAdd"&gt;&lt;/activity&gt; &lt;activity android:name=".ui.routine.ActivityRoutineAddExercise"&gt;&lt;/activity&gt; &lt;/application&gt; &lt;/manifest&gt; </code></pre> <p>Also, the POM:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;parent&gt; &lt;groupId&gt;com.seventheye.android&lt;/groupId&gt; &lt;artifactId&gt;autoworkout-parent&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;/parent&gt; &lt;artifactId&gt;autoworkout-app&lt;/artifactId&gt; &lt;packaging&gt;apk&lt;/packaging&gt; &lt;name&gt;autoworkout - Application&lt;/name&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.google.inject&lt;/groupId&gt; &lt;artifactId&gt;guice-no_aop&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.google.inject&lt;/groupId&gt; &lt;artifactId&gt;guice-assisted-inject&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.roboguice&lt;/groupId&gt; &lt;artifactId&gt;roboguice&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.j256.ormlite&lt;/groupId&gt; &lt;artifactId&gt;ormlite-core&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.j256.ormlite&lt;/groupId&gt; &lt;artifactId&gt;ormlite-android&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.pivotallabs&lt;/groupId&gt; &lt;artifactId&gt;robolectric&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.seventheye.android&lt;/groupId&gt; &lt;artifactId&gt;robolectric-sqlite&lt;/artifactId&gt; &lt;version&gt;1.0-RC5-SNAPSHOT&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;profiles&gt; &lt;profile&gt; &lt;id&gt;proguard&lt;/id&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;com.pyx4me&lt;/groupId&gt; &lt;artifactId&gt;proguard-maven-plugin&lt;/artifactId&gt; &lt;version&gt;2.0.4&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;phase&gt;process-classes&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;proguard&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;configuration&gt; &lt;proguardVersion&gt;4.6&lt;/proguardVersion&gt; &lt;maxMemory&gt;512m&lt;/maxMemory&gt; &lt;injar&gt;android-classes&lt;/injar&gt; &lt;libs&gt; &lt;lib&gt;${rt.jar.path}&lt;/lib&gt; &lt;lib&gt;${jsse.jar.path}&lt;/lib&gt; &lt;/libs&gt; &lt;obfuscate&gt;false&lt;/obfuscate&gt; &lt;addMavenDescriptor&gt;false&lt;/addMavenDescriptor&gt; &lt;proguardInclude&gt;${project.basedir}/proguard.conf&lt;/proguardInclude&gt; &lt;/configuration&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;net.sf.proguard&lt;/groupId&gt; &lt;artifactId&gt;proguard&lt;/artifactId&gt; &lt;version&gt;4.6&lt;/version&gt; &lt;scope&gt;runtime&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/profile&gt; &lt;profile&gt; &lt;id&gt;release&lt;/id&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;com.pyx4me&lt;/groupId&gt; &lt;artifactId&gt;proguard-maven-plugin&lt;/artifactId&gt; &lt;version&gt;2.0.4&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;phase&gt;process-classes&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;proguard&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;configuration&gt; &lt;proguardVersion&gt;4.6&lt;/proguardVersion&gt; &lt;maxMemory&gt;512m&lt;/maxMemory&gt; &lt;injar&gt;android-classes&lt;/injar&gt; &lt;!-- &lt;injar&gt;scala-library&lt;/injar&gt;--&gt; &lt;libs&gt; &lt;lib&gt;${rt.jar.path}&lt;/lib&gt; &lt;lib&gt;${jsse.jar.path}&lt;/lib&gt; &lt;/libs&gt; &lt;obfuscate&gt;false&lt;/obfuscate&gt; &lt;addMavenDescriptor&gt;false&lt;/addMavenDescriptor&gt; &lt;proguardInclude&gt;${project.basedir}/proguard.conf&lt;/proguardInclude&gt; &lt;/configuration&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;net.sf.proguard&lt;/groupId&gt; &lt;artifactId&gt;proguard&lt;/artifactId&gt; &lt;version&gt;4.6&lt;/version&gt; &lt;scope&gt;runtime&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-jarsigner-plugin&lt;/artifactId&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;sign-application-apk&lt;/id&gt; &lt;phase&gt;package&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;sign&lt;/goal&gt; &lt;goal&gt;verify&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt; &lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;startemulator&lt;/id&gt; &lt;phase&gt;initialize&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;emulator-start&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;execution&gt; &lt;id&gt;zipalign-application-apk&lt;/id&gt; &lt;phase&gt;package&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;zipalign&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;configuration&gt; &lt;zipalign&gt; &lt;verbose&gt;true&lt;/verbose&gt; &lt;inputApk&gt;${project.build.directory}/${project.artifactId}-${project.version}.apk&lt;/inputApk&gt; &lt;outputApk&gt;${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk&lt;/outputApk&gt; &lt;/zipalign&gt; &lt;sign&gt; &lt;debug&gt;false&lt;/debug&gt; &lt;/sign&gt; &lt;emulator&gt; &lt;avd&gt;Android2.2&lt;/avd&gt; &lt;wait&gt;10000&lt;/wait&gt; &lt;options&gt;-no-skin&lt;/options&gt; &lt;/emulator&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt; &lt;artifactId&gt;build-helper-maven-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;artifacts&gt; &lt;artifact&gt; &lt;file&gt;${project.build.directory}/proguard_map.txt&lt;/file&gt; &lt;type&gt;map&lt;/type&gt; &lt;classifier&gt;release&lt;/classifier&gt; &lt;/artifact&gt; &lt;/artifacts&gt; &lt;/configuration&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;attach-signed-aligned&lt;/id&gt; &lt;phase&gt;package&lt;/phase&gt; &lt;goals&gt; &lt;goal&gt;attach-artifact&lt;/goal&gt; &lt;/goals&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-clean-plugin&lt;/artifactId&gt; &lt;version&gt;2.4.1&lt;/version&gt; &lt;configuration&gt; &lt;filesets&gt; &lt;fileset&gt; &lt;directory&gt;tmp&lt;/directory&gt; &lt;includes&gt; &lt;include&gt;*&lt;/include&gt; &lt;/includes&gt; &lt;/fileset&gt; &lt;/filesets&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt; &lt;version&gt;2.8&lt;/version&gt; &lt;!-- see http://maven.apache.org/plugins/maven-eclipse-plugin/eclipse-mojo.html for more information --&gt; &lt;configuration&gt; &lt;downloadSources&gt;true&lt;/downloadSources&gt; &lt;downloadJavadocs&gt;true&lt;/downloadJavadocs&gt; &lt;projectnatures&gt; &lt;projectnature&gt;org.scala-ide.sdt.core.scalanature&lt;/projectnature&gt; &lt;projectnature&gt;org.eclipse.jdt.core.javanature&lt;/projectnature&gt; &lt;/projectnatures&gt; &lt;buildcommands&gt; &lt;buildcommand&gt;org.scala-ide.sdt.core.scalabuilder&lt;/buildcommand&gt; &lt;/buildcommands&gt; &lt;classpathContainers&gt; &lt;classpathContainer&gt;org.scala-ide.sdt.launching.SCALA_CONTAINER&lt;/classpathContainer&gt; &lt;classpathContainer&gt;org.eclipse.jdt.launching.JRE_CONTAINER&lt;/classpathContainer&gt; &lt;/classpathContainers&gt; &lt;excludes&gt; &lt;exclude&gt;org.scala-lang:scala-library&lt;/exclude&gt; &lt;exclude&gt;org.scala-lang:scala-compiler&lt;/exclude&gt; &lt;/excludes&gt; &lt;sourceIncludes&gt; &lt;sourceInclude&gt;**/*.scala&lt;/sourceInclude&gt; &lt;sourceInclude&gt;**/*.java&lt;/sourceInclude&gt; &lt;/sourceIncludes&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/profile&gt; &lt;/profiles&gt; &lt;/project&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload