【问题标题】:App Engine Connected Android Project - Libraries source attachmentApp Engine Connected Android 项目 - 库源附件
【发布时间】:2012-02-04 14:16:47
【问题描述】:

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

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

但我无法使用 C2DM 完成“Say Hello”步骤(运行和调试: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

【问题讨论】:

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


    【解决方案1】:

    我想我有同样的问题。缺少 Validation 库,手动添加后它就可以工作了。

    要添加它或检查它是否包含,请执行以下操作: 右键单击您的项目 > 属性 > Java 构建路径 > 库选项卡 > 添加外部 JAR

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

    清理并构建您的工作区,然后重试。

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

    【讨论】:

      【解决方案2】:

      这就是问题

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-11
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多