I have implemented
Datastore callbacks in our GAE Java application. We are using app. engine SDK 1.7.6 and have setup Annotation Processing configuration in Eclipse, as expected. It is working fine in Eclipse. Now, we are moving to an Ant-based build
on Windows 7 and are getting an error during compile process, which is unable to create the META-INF\datastorecallbacks.xml file. The error is eventually caused by: *java.net.URISyntaxException: Illegal character in path at index 8: META-INF\datastorecallbacks.xml*. A detailed error trace is given below.
Issue 7208 in Google Appengine suggests that this bug has was there and was fixed in app. engine SDK (Java) 1.7.5. We are finding this bug in 1.7.6 and 1.8.0 too. A question posted against that issue ticket elicited no response. I am wondering if someone has faced this issue or has a solution to this.
We are using JDK 1.6 and %JAVA_HOME% points to ...\jdk_1.6.0_37. Any pointers to resolving this would be highly appreciated.
Error trace on Windows 7 below:
[javac] error: Datastore Callbacks: java.lang.IllegalArgumentException
[javac]
[javac] at java.net.URI.create(URI.java:841)
[javac]
[javac] at com.sun.tools.javac.util.DefaultFileManager.getFileForOutput(DefaultFileManager.java:1067)
[javac]
[javac] at com.sun.tools.javac.processing.JavacFiler.getResource(JavacFiler.java:434)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.loadCallbacksConfigWriter(DatastoreCallbacksProcessor.java:242)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.processImpl(DatastoreCallbacksProcessor.java:217)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.process(DatastoreCallbacksProcessor.java:207)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:627)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:556)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:701)
[javac]
[javac] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:987)
[javac]
[javac] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac]
[javac] at com.sun.tools.javac.Main.compile(Main.java:69)
[javac]
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javac]
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[javac]
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac]
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac]
[javac] at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
[javac]
[javac] at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1153)
[javac]
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:930)
[javac]
[javac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[javac]
[javac] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[javac]
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac]
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac]
[javac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[javac]
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac]
[javac] at org.apache.tools.ant.Target.execute(Target.java:435)
[javac]
[javac] at org.apache.tools.ant.Target.performTasks(Target.java:456)
[javac]
[javac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
[javac]
[javac] at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
[javac]
[javac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[javac]
[javac] at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
[javac]
[javac] at org.apache.tools.ant.Main.runBuild(Main.java:851)
[javac]
[javac] at org.apache.tools.ant.Main.startAnt(Main.java:235)
[javac]
[javac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[javac]
[javac] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[javac]
[javac] Caused by: java.net.URISyntaxException: Illegal character in path at index 8: META-INF\datastorecallbacks.xml
[javac]
[javac] at java.net.URI$Parser.fail(URI.java:2810)
[javac]
[javac] at java.net.URI$Parser.checkChars(URI.java:2983)
[javac]
[javac] at java.net.URI$Parser.parseHierarchical(URI.java:3067)
[javac]
[javac] at java.net.URI$Parser.parse(URI.java:3025)
[javac]
[javac] at java.net.URI.<init>(URI.java:577)
[javac]
[javac] at java.net.URI.create(URI.java:839)
[javac]
[javac] ... 37 more
[javac]
[javac] error: Datastore Callbacks: java.lang.IllegalArgumentException
[javac]
[javac] at java.net.URI.create(URI.java:841)
[javac]
[javac] at com.sun.tools.javac.util.DefaultFileManager.getFileForOutput(DefaultFileManager.java:1067)
[javac]
[javac] at com.sun.tools.javac.processing.JavacFiler.getResource(JavacFiler.java:434)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.loadCallbacksConfigWriter(DatastoreCallbacksProcessor.java:242)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.processImpl(DatastoreCallbacksProcessor.java:217)
[javac]
[javac] at com.google.appengine.tools.compilation.DatastoreCallbacksProcessor.process(DatastoreCallbacksProcessor.java:207)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:627)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$000(JavacProcessingEnvironment.java:70)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.runContributingProcs(JavacProcessingEnvi
ronment.java:487)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.runLastRound(JavacProcessingEnvironment.java:848)
[javac]
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:775)
[javac]
[javac] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:987)
[javac]
[javac] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[javac]
[javac] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[javac]
[javac] at com.sun.tools.javac.Main.compile(Main.java:69)
[javac]
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javac]
[javac] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[javac]
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac]
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac]
[javac] at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
[javac]
[javac] at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1153)
[javac]
[javac] at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:930)
[javac]
[javac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[javac]
[javac] at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[javac]
[javac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javac]
[javac] at java.lang.reflect.Method.invoke(Method.java:597)
[javac]
[javac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[javac]
[javac] at org.apache.tools.ant.Task.perform(Task.java:348)
[javac]
[javac] at org.apache.tools.ant.Target.execute(Target.java:435)
[javac]
[javac] at org.apache.tools.ant.Target.performTasks(Target.java:456)
[javac]
[javac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
[javac]
[javac] at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
[javac]
[javac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[javac]
[javac] at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
[javac]
[javac] at org.apache.tools.ant.Main.runBuild(Main.java:851)
[javac]
[javac] at org.apache.tools.ant.Main.startAnt(Main.java:235)
[javac]
[javac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[javac]
[javac] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[javac]
[javac] Caused by: java.net.URISyntaxException: Illegal character in path at index 8: META-INF\datastorecallbacks.xml
[javac]
[javac] at java.net.URI$Parser.fail(URI.java:2810)
[javac]
[javac] at java.net.URI$Parser.checkChars(URI.java:2983)
[javac]
[javac] at java.net.URI$Parser.parseHierarchical(URI.java:3067)
[javac]
[javac] at java.net.URI$Parser.parse(URI.java:3025)
[javac]
[javac] at java.net.URI.<init>(URI.java:577)
[javac]
[javac] at java.net.URI.create(URI.java:839)
[javac]
[javac] ... 39 more
[javac]
[javac] 2 errors