App Engine连接Android项目 - 库源附件

时间:2012-02-04 14:16:48

标签: android google-app-engine android-c2dm

我是Android和App Engine的新手,我正在尝试按照此处描述的步骤创建App Engine Connected Android项目:

http://code.google.com/intl/es-ES/eclipse/docs/appengine_connected_android.html

但我无法使用C2DM完成“Say Hello”步骤(Run& Debug:7),因为它会提示SocketException(“协议不支持地址系列”),有时在调试时会出现RuntimeException它本地...我不明白,因为我还没有自定义项目,但经过一些调试后我发现它抱怨一些库(包括在项目创建中)没有源附件...最烦人的部分是它抱怨ThreadPoolExecutor.class,它属于Android 2.2 JAR中的java.util.concurrent ...很奇怪,但无论如何我把库附加到它的源头并且它一直抱怨同一个类(“源附件不包含文件ThreadPoolExecutor.class的源“)...

在执行第一行时,它似乎在Util.getRequestFactory()方法中崩溃。这里它调用RequestFactorySource中的一个方法,它属于requestfactory-client库,包含在项目创建中但是又没有源附件......顺便说一下,在执行该方法调用之后,“task”变量的值为null ,这是正常的吗?

我想这是关于配置中的一个小错误或者其他什么,但是我已经挣扎了几天而且我已经不知道该怎么做了,所以任何帮助都会受到赞赏:)

编辑:我正在附加logcat输出,我希望这样可以更容易地找到错误。谷歌搜索后我发现这是C2DM示例项目中的常见错误,但我没有得到任何适当的解决方案。

    I/C2dmftwActivity(  333): onCreate
    I/ActivityManager(   58): Displayed activity com.c2dmftw/.C2dmftwActivity: 1281
    ms (total 1281 ms)
    D/dalvikvm(  126): GC_EXPLICIT freed 997 objects / 54032 bytes in 83ms
    W/dalvikvm(  333): threadid=7: thread exiting with uncaught exception (group=0x4
    001d800)
    E/AndroidRuntime(  333): FATAL EXCEPTION: AsyncTask #1
    E/AndroidRuntime(  333): java.lang.RuntimeException: An error occured while exec
    uting doInBackground()
    E/AndroidRuntime(  333):        at android.os.AsyncTask$3.done(AsyncTask.java:20
    0)
    E/AndroidRuntime(  333):        at java.util.concurrent.FutureTask$Sync.innerSet
    Exception(FutureTask.java:273)
    E/AndroidRuntime(  333):        at java.util.concurrent.FutureTask.setException(
    FutureTask.java:124)
    E/AndroidRuntime(  333):        at java.util.concurrent.FutureTask$Sync.innerRun
    (FutureTask.java:307)
    E/AndroidRuntime(  333):        at java.util.concurrent.FutureTask.run(FutureTas
    k.java:137)
    E/AndroidRuntime(  333):        at java.util.concurrent.ThreadPoolExecutor.runWo
    rker(ThreadPoolExecutor.java:1068)
    E/AndroidRuntime(  333):        at java.util.concurrent.ThreadPoolExecutor$Worke
    r.run(ThreadPoolExecutor.java:561)
    E/AndroidRuntime(  333):        at java.lang.Thread.run(Thread.java:1096)
    E/AndroidRuntime(  333): Caused by: java.lang.RuntimeException: The RequestFacto
    ry ValidationTool must be run for the com.c2dmftw.client.MyRequestFactory Reques
    tFactory type
    E/AndroidRuntime(  333):        at com.google.web.bindery.requestfactory.vm.impl
    .Deobfuscator$Builder.load(Deobfuscator.java:59)
    E/AndroidRuntime(  333):        at com.google.web.bindery.requestfactory.vm.InPr
    ocessRequestFactory.<init>(InProcessRequestFactory.java:80)
    E/AndroidRuntime(  333):        at com.google.web.bindery.requestfactory.vm.Requ
    estFactorySource.create(RequestFactorySource.java:43)
    E/AndroidRuntime(  333):        at com.c2dmftw.Util.getRequestFactory(Util.java:
    158)
    E/AndroidRuntime(  333):        at com.c2dmftw.C2dmftwActivity$2$1.doInBackgroun
    d(C2dmftwActivity.java:144)
    E/AndroidRuntime(  333):        at com.c2dmftw.C2dmftwActivity$2$1.doInBackgroun
    d(C2dmftwActivity.java:1)
    E/AndroidRuntime(  333):        at android.os.AsyncTask$2.call(AsyncTask.java:18
    5)
    E/AndroidRuntime(  333):        at java.util.concurrent.FutureTask$Sync.innerRun
    (FutureTask.java:305)
    E/AndroidRuntime(  333):        ... 4 more
    W/ActivityManager(   58):   Force finishing activity com.c2dmftw/.C2dmftwActivit
    y
    W/GTalkService(  170): [GTalkConnection.13] doConnect: caught XMPPError connecti
    ng to mtalk.google.com:5228.: (502)
    W/GTalkService(  170):   -- caused by: java.net.SocketException: The operation t
    imed out

2 个答案:

答案 0 :(得分:0)

我想我遇到了同样的问题。验证库丢失了,手动添加后它就可以工作了。

要添加它或检查它是否包括: 右键单击您的项目&gt;属性&gt; Java构建路径&gt; “库选项卡”&gt;添加外部JAR

然后浏览到您的GWT安装文件夹。如果您使用eclipse安装它,请使用eclipse / plugins / com.google.gwt.eclipse.sdkbundle_ / gwt- / validation-api-1.0.0.GA.jar

清理并构建工作区并再次尝试。

这也可能发生在客户端GWT方面。如果发生这种情况,您必须执行相同的操作,但使用您的GAE项目并添加相同的jar

答案 1 :(得分:0)

这是问题

Caused by: java.lang.RuntimeException: The RequestFacto
    ry ValidationTool must be run for the com.c2dmftw.client.MyRequestFactory Reques
    tFactory type

如果您使用的是GWT 2.4+,则必须运行验证工具。您可以配置Eclipse为您执行此操作,具体方法如下:

http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation