【问题标题】:Android Restlet Wrap CrashingAndroid Restlet Wrap 崩溃
【发布时间】:2011-05-11 06:48:05
【问题描述】:

我正在使用 Android 1.6 和 restlet android 版本 2.0.7...

它在 wrap() 时崩溃:

ClientResource cr = new ClientResource("http://myapp.appspot.com/restlet/");
IRestletResource r = cr.wrap(IRestletResource.class);
MyData[] ss = r.getDatas();

这么说

05-10 20:40:56.272: ERROR/AndroidRuntime(435): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.myapp.android/se.myapp.android.MyAppAndroid}: java.lang.NoSuchMethodException
...
05-10 20:40:56.272: ERROR/AndroidRuntime(435): Caused by: java.lang.NoSuchMethodException
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.Class.getDeclaredMethods(Native Method)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.ClassCache.getDeclaredPublicMethods(ClassCache.java:166)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.ClassCache.getDeclaredMethods(ClassCache.java:179)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.ClassCache.findAllMethods(ClassCache.java:249)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.ClassCache.getFullListOfMethods(ClassCache.java:223)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.ClassCache.getAllPublicMethods(ClassCache.java:204)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at java.lang.Class.getMethods(Class.java:1038)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at org.restlet.engine.resource.AnnotationUtils.addAnnotations(AnnotationUtils.java:131)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at org.restlet.engine.resource.AnnotationUtils.getAnnotations(AnnotationUtils.java:231)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at org.restlet.resource.ClientResource.wrap(ClientResource.java:1541)
05-10 20:40:56.272: ERROR/AndroidRuntime(435):     at se.myapp.android.MyAppAndroid.onCreate(MyAppAndroid.java:61)
...

界面看起来像

public interface IRestletResource 
{
    @Get
    public MyData[] getDatas();
}

服务器端 RestletResource 如下所示:

public class RestletResource extends ServerResource implements IRestletResource
{
    MyData[] m_Datas;

    @Override  
    protected void doInit() throws ResourceException 
    {   
        m_Datas = new MyData("carl",32);
    }   

    @Get
    public MyData[] getDatas()
    {
        return m_Datas; //return new myData("..",1); still crashes.
    }
}

MyData 如下所示:

public class MyData implements Serializable
{
    private static final long serialVersionUID = 1L;

    private String  m_Name;
    private int     m_Age;

    public MyData()
    {

    }

    public MyData(String n, int a)
    {
        m_Name = n;
        m_Age = a;
    }
    //...
}

现在。 如果我将资源更改为返回字符串而不是 MyData [],它不会崩溃。 如果我返回一个 MyData 实例而不是数组,它仍然会崩溃。

【问题讨论】:

    标签: java android google-app-engine restlet


    【解决方案1】:

    原来你需要

    Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
    

    在客户端,以及

    getConnectorService().getClientProtocols().add(Protocol.FILE);
    

    在服务器端的应用程序中..

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 2018-02-07
      • 2012-07-07
      • 2012-12-27
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多