Мастер Android, подключенный к App Engine, останавливается в RuntimeException

Я следую https://developers.google.com/eclipse/docs/appengine_connected_android учебник, и мой Eclipse останавливается на RuntimeException (журнал ниже), когда я нажимаю кнопку "Say Hello".

Инструменты

Windows 7 (64 бита)
eclipse indigo SR2
android-sdk rev 19
android 2.3.3 API 10
app engine sdk 1.6.5
gwt 2.4.0
jdk1.7.0_04< br> РЕДАКТИРОВАНИЕ Решение: используйте Java 6

Журнал

05-05 02:32:48.501: W/dalvikvm(523): threadid=9: thread exiting with uncaught exception (group=0x40015560)
05-05 02:32:48.501: E/AndroidRuntime(523): FATAL EXCEPTION: AsyncTask #1
05-05 02:32:48.501: E/AndroidRuntime(523): java.lang.RuntimeException: An error occured while executing doInBackground()
05-05 02:32:48.501: E/AndroidRuntime(523):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.lang.Thread.run(Thread.java:1019)
05-05 02:32:48.501: E/AndroidRuntime(523): Caused by: java.lang.RuntimeException: The RequestFactory ValidationTool must be run for the com.MyApp.client.MyRequestFactory RequestFactory type
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.google.web.bindery.requestfactory.vm.impl.Deobfuscator$Builder.load(Deobfuscator.java:59)
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.google.web.bindery.requestfactory.vm.InProcessRequestFactory.<init>(InProcessRequestFactory.java:80)
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.google.web.bindery.requestfactory.vm.RequestFactorySource.create(RequestFactorySource.java:43)
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.MyApp.Util.getRequestFactory(Util.java:158)
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.MyApp.MyAppActivity$2$1.doInBackground(MyAppActivity.java:144)
05-05 02:32:48.501: E/AndroidRuntime(523):  at com.MyApp.MyAppActivity$2$1.doInBackground(MyAppActivity.java:1)
05-05 02:32:48.501: E/AndroidRuntime(523):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
05-05 02:32:48.501: E/AndroidRuntime(523):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
05-05 02:32:48.501: E/AndroidRuntime(523):  ... 4 more

Я пытался

  • Погуглил в поисках решений.
  • Выполнение взломов, описанных в руководстве (например, взлом proguard.cfg, переименование «lib» в «libs»)
  • Взломы, описанные в http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation , но они уже установлены по умолчанию.
  • Выполнение бессмысленных действий программистов, когда они в отчаянии (переустановка инструментов, перезагрузка машины, перемещение каталогов и т. д.)

Рэнт

Я серьезно разочарован тем, что Google предоставил такой бесполезный инструмент, я видел, что у людей часто возникают проблемы с этим конкретным мастером. Это простой мастер «Hello World», меньше всего можно было бы ожидать его работы «из коробки».

В качестве дополнительного вопроса: есть ли какой-либо другой хороший ресурс/пример, который поможет узнать, как синхронизировать данные между App Engine и приложением для Android? Если нет простого решения, чтобы заставить этот «Hello World» работать, то это не что иное, как пустая трата времени.

ИЗМЕНИТЬ Решено. Когда пример проекта запущен и работает, это на самом деле довольно приятно.


person Aya    schedule 05.05.2012    source источник


Ответы (1)


Как вы описали, вы прикрепили requestfactory-apt.jar к компилятору Java/обработке аннотаций/фабричному пути в приложении для Android.

  • Обновите App Engine SDK 1.6.5.1, если у вас еще нет последней версии.

  • Сделайте проект чистым... в своем проекте.

  • Используйте Java 6, App Enginge пока не поддерживает Java 7.

person Sam    schedule 05.05.2012
comment
Вау, спасибо! Использование Java 6 работало как шарм. (кстати, где вы взяли App Engine SDK 1.6.5.1? Я почти уверен, что самая новая версия — 1.6.5) - person Aya; 05.05.2012