ok.. update.
setting processorpath with the same path as the Factory Path in
eclipse didn't work, I got this error:
[javac] error: Exception thrown while constructing Processor object:
java.lang.NoClassDefFoundError: javassist/ClassPath
hmmm... so, I tried manually adding the same factory path as is in
eclipse to the classpath of the javac ANT task (called from the
"compile" target in the Android main_rules.xml ANT file).
Good news and bad news...
All the errors relating to MY classes went way, but I still can't
generate mocks for Android sdk classes. Here's the output:
[javac] Note: Mocking class android.widget.ImageView
[javac] error: Could not find android.widget.ImageView
[javac] error: java.lang.ClassNotFoundException:
v231.genmocks.android.widget.ImageViewDelegateSubclass
[javac] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[javac] at java.security.AccessController.doPrivileged(Native
Method)
[javac] at java.net.URLClassLoader.findClass(URLClassLoader.java:
190)
[javac] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[javac] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[javac] at java.lang.Class.forName0(Native Method)
[javac] at java.lang.Class.forName(Class.java:169)
[javac] at
com.google.android.testing.mocking.AndroidFrameworkMockGenerator.getPrebuiltClassesFor(AndroidFrameworkMockGenerator.java:
80)
[javac] at
com.google.android.testing.mocking.AndroidFrameworkMockGenerator.getMocksForClass(AndroidFrameworkMockGenerator.java:
59)
[javac] at
com.google.android.testing.mocking.UsesMocksProcessor.getClassMocks(UsesMocksProcessor.java:
180)
[javac] at
com.google.android.testing.mocking.UsesMocksProcessor.getMocksFor(UsesMocksProcessor.java:
100)
[javac] at
com.google.android.testing.mocking.UsesMocksProcessor.process(UsesMocksProcessor.java:
75)
[javac] at
com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:
625)
[javac] at
com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:
554)
[javac] at
com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:
699)
[javac] at
com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:
981)
[javac] at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac] at com.sun.tools.javac.Main.compile(Main.java:69)
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[javac] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
[javac] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at
org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:
56)
[javac] at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:
1097)
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:
906)
[javac] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[javac] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown
Source)
[javac] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:
106)
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac] at
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
[javac] at com.android.ant.IfElseTask.execute(IfElseTask.java:
120)
[javac] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[javac] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown
Source)
[javac] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac] at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:
106)
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac] at org.apache.tools.ant.Target.execute(Target.java:390)
[javac] at org.apache.tools.ant.Target.performTasks(Target.java:
411)
[javac] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
[javac] at
org.apache.tools.ant.Project.executeTarget(Project.java:1366)
[javac] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:
41)
[javac] at
org.apache.tools.ant.Project.executeTargets(Project.java:1249)
[javac] at org.apache.tools.ant.Main.runBuild(Main.java:801)
[javac] at org.apache.tools.ant.Main.startAnt(Main.java:218)
[javac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:
280)
[javac] at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[javac] Note: Known Classpath:
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
bin/classes/
[javac] Note: file:/usr/local/newco/android/checkout/newco-android/
bin/classes/
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/AndroidMockGenerator-nodeps.jar
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/AndroidMockRuntime.jar
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/android_framework_mocks.jar
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/easymock.jar
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/javassist-newco.jar
[javac] Note: file:/Users/myuser/dev/workspace/newco-android-test/
libs/polidea_test_runner_1.1.jar
[javac] Note: file:/usr/local/newco/android/checkout/newco-android/
libs/commons-codec-1.4.jar
[javac] Note: file:/usr/local/newco/android/checkout/newco-android/
libs/FlurryAgent.jar
[javac] Note: file:/usr/local/newco/android/checkout/newco-android/
libs/ormlite-android-4.18.jar
[javac] Note: file:/usr/local/newco/android/checkout/newco-android/
libs/ormlite-core-4.18.jar
[javac] Note: file:/usr/local/android/platforms/android-8/
android.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
launcher.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
antlr.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-bcel.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-bsf.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-log4j.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-oro.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-regexp.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-resolver.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
apache-xalan2.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
commons-logging.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
commons-net.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
jai.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
javamail.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
jdepend.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
jmf.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
jsch.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
junit.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
netrexx.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
nodeps.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
swing.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/ant-
testutil.jar
[javac] Note: file:/Users/myuser/dev/java/apache-ant-1.8.1/lib/
ant.jar
The inexplicable thing is this:
[javac] Note: file:/usr/local/android/platforms/android-8/android.jar
I MANUALLY added that path to the classpath of the javac task, and
it's clearly in the classloader when the annotation processor runs (I
have double-checked that it is the correct path too)
and yet it can't find android.widget.ImageView, which is in
android.jar.
Weird...
I'm thinking I might go back to basics and just create a simple
android project, with a test project, using AndroidMock and see what
happens when I execute run-tests...
If you have done the same and have any insight I'd really appreciate
it.
Cheers,
Jason.