我在保存数据时遇到了ActiveAndroid问题。
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
import com.google.gson.annotations.SerializedName;
@Table(name = "login_response")
public class LoginResponse extends Model{
@Column(name = "a_token")
@SerializedName("access_token")
public String mAccessToken;
@Column(name = "expiry_time")
@SerializedName("expires_in")
public Long mExpiresIn;
@Column(name = "refresh_token")
@SerializedName("refresh_token")
public String mRefreshToken;
@Column(name = "scope")
@SerializedName("scope")
public String mScope;
@Column(name = "token_type")
@SerializedName("token_type")
public String mTokenType;
public LoginResponse(){}
public String getAccessToken() {
return mAccessToken;
}
public void setAccessToken(String accessToken) {
mAccessToken = accessToken;
}
public Long getExpiresIn() {
return mExpiresIn;
}
public void setExpiresIn(Long expiresIn) {
mExpiresIn = expiresIn;
}
public String getRefreshToken() {
return mRefreshToken;
}
public void setRefreshToken(String refreshToken) {
mRefreshToken = refreshToken;
}
public String getScope() {
return mScope;
}
public void setScope(String scope) {
mScope = scope;
}
public String getTokenType() {
return mTokenType;
}
public void setTokenType(String tokenType) {
mTokenType = tokenType;
}
}
上面是从web api获取数据时使用改装获得的响应的映射类。但我犯了这样的错误。
致命异常:主进程:com。比蒂。在线支付,PID:3826 java。lang.IllegalArgumentException:无法为类com创建转换器。比蒂。在线支付。模型登录。LoginResponse方法LoginApi。获取第二次响应。ServiceMethod$Builder。更新2时出现methodError(ServiceMethod.java:695)。ServiceMethod$Builder。createResponseConverter(ServiceMethod.java:681)位于第2页。ServiceMethod$Builder。在第2页构建(ServiceMethod.java:166)。改造。loadServiceMethod(Refundation.java:166)位于Refundation2。翻新1美元。在java上调用(reformation.java:145)。朗,反思一下。代理调用(Proxy.java:393),价格为$Proxy2。getResponse(未知来源)位于com。比蒂。在线支付。用户界面。viewpresenter。登录。登录PresentImpl。在com上尝试登录(loginpresentrempl.java:39)。比蒂。在线支付。用户界面。viewpresenter。登录。登录注册活动。onbtnsigninclick(LoginRegisterActivity.java:93)位于com。比蒂。在线支付。用户界面。viewpresenter。登录。LoginRegisterActivity$$ViewBinder$1。butterknife的doClick(LoginRegisterActivity$$ViewBinder.java:23)。内部的DebouncingOnClickListener。android上的onClick(DebouncingOnClickListener.java:22)。看法看法android上的performClick(View.java:5198)。看法查看$PerformClick。在android上运行(View.java:21147)。操作系统。汉德勒。android上的handleCallback(Handler.java:739)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:95)。操作系统。活套。android上的loop(Looper.java:148)。应用程序。活动线程。java上的main(ActivityThread.java:5417)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:726)。Android内部的操作系统。合子体。main(zyteinit.java:616)由以下原因引起:java。lang.SecurityException:无法在java上访问字段构造函数。朗,反思一下。建造师。setAccessible(Constructor.java:334)位于com.google.格森。内部的施工人员施工人员。com上的newDefaultConstructor(ConstructorConstructor.java:101)。谷歌。格森。内部的施工人员施工人员。在com上获取(ConstructorConstructor.java:83)。谷歌。格森。内部的绑定ReflectTypeAdapterFactory。在com上创建(reflectTypeAdapterFactory.java:95)。谷歌。格森。格森。getAdapter(Gson.java:416)位于com.google.格森。内部的绑定MapTypeAdapterFactory。getKeyAdapter(MapTypeAdapterFactory.java:140)位于com.google.格森。内部的绑定MapTypeAdapterFactory。在com上创建(MapTypeAdapterFactory.java:125)。谷歌。格森。格森。getAdapter(Gson.java:416)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory。getFieldAdapter(ReflectTypeAdapterFactory.java:135)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory 1美元。(ReflectTypeAdapterFactory.java:105)在com上。谷歌。格森。内部的绑定ReflectTypeAdapterFactory。com上的createBoundField(reflectTypeAdapterFactory.java:104)。谷歌。格森。内部的绑定ReflectTypeAdapterFactory。getBoundFields(ReflectTypeAdapterFactory.java:160)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory。在com上创建(reflectTypeAdapterFactory.java:96)。谷歌。格森。格森。getAdapter(Gson.java:416)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory。getFieldAdapter(ReflectTypeAdapterFactory.java:135)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory 1美元。(ReflectTypeAdapterFactory.java:105)在com上。谷歌。格森。内部的绑定ReflectTypeAdapterFactory。com上的createBoundField(reflectTypeAdapterFactory.java:104)。谷歌。格森。内部的绑定ReflectTypeAdapterFactory。getBoundFields(ReflectTypeAdapterFactory.java:160)位于com.google.格森。内部的绑定ReflectTypeAdapterFactory。在com上创建(reflectTypeAdapterFactory.java:96)。谷歌。格森。格森。getAdapter(Gson.java:416)位于第2页。转换器。格森。GsonConverterFactory。responseBodyConverter(GsonConverterFactory.java:63)位于改造2。改造。nextResponseBodyConverter(Refundation.java:325)位于Refundation2。改造。responseBodyConverter(Reformation.java:308)位于Reformation 2。ServiceMethod$Builder。createResponseConverter(ServiceMethod.java:679)位于第2页。ServiceMethod$Builder。构建(ServiceMethod.java:166)
在使用ActiveAndroid之前,它工作得很好,但当我尝试使用ActiveAndroid时,我遇到了上述错误。我可以将不同类别的手动创建的对象相同并保存下来,但在使用改型和活动android时,我不能。
我正在使用依赖项的改造
编译'com。收拾一下。改装2:改装:2.0.2'
编译'com。收拾一下。改装2:变流器gson:2.0.2'
这就是我构建改造客户端的方式
okhttpClientBuilder = new OkHttpClient.Builder();
retrofitBuilder = new Retrofit.Builder();
client = okhttpClientBuilder
.addInterceptor(new ApiInterceptor())
.build();
retrofit = retrofitBuilder
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
我调用api的方式是
Retrofit retrofit = OnlinePaymentApplication.getRetrofit();
APIs.LoginApi api = retrofit.create(APIs.LoginApi.class);
Call<LoginResponse> call = api.getResponse(grantType, clientId, clientSecret, userName, userPassword);
call.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
loginView.hideProgress();
if (response.isSuccessful()) {
loginView.onLoginDataReceived(response.body());
} else {
ErrorResponse error = ErrorUtils.parseError(response);
loginView.onErrorMessageReceived(error.getMessage());
}
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
loginView.hideProgress();
if (t instanceof IOException) {
loginView.onErrorMessageReceived(MetaData.NETWORK_ERROR);
} else {
loginView.onErrorMessageReceived(t.getLocalizedMessage());
}
}
});
您需要指定想要一个版本为2.0.0
的Gson转换器,如下所示:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
我的POJO课程如下: 当我试图从我的tst/文件夹创建XYZ类的对象时,它失败了,错误是构造函数不能从外部包访问,但当我在POJO中使用@必需的ArgsConstructor时,它开始正常工作,并且不显示错误。实际错误如下: 错误:XYZ(字符串、字符串、状态)在XYZ中不是公共的;无法从包外部访问 所以,我想知道@AllArgsConstructor(由@Value提供)和@必需ArgsCon
问题内容: 在C ++中,对象的生命周期从构造函数成功完成时开始。在构造函数内部,该对象尚不存在。 问:从构造函数发出异常是什么意思? 答:这意味着构造已失败,该物体从未存在,其寿命从未开始。[ 来源 ] 我的问题是:Java是否同样适用?例如,如果我移交给另一个对象,然后构造函数失败,会发生什么情况? 这个定义明确吗?现在是否有对非对象的引用? 问题答案: 该对象存在,但未正确初始化。 每当构造
-----------这是我的文件服务---------------------我使用的是spring boot 2.2.2 -------这是我的文件控制器-------- 进程已完成,退出代码为%1
无法定义“const”构造函数,因为字段“电流用户”使用非常量值初始化。 无法为具有非最终字段的类定义const构造函数。 参数类型'Stream 人飞奔
我有一个以下类: 当我尝试转换JSON时 对于这个类实例,我得到以下异常: 获取原因:com . faster XML . Jackson . databind . jsonmappingexception:无法构造com . medianet . rtb . mogli . commons . dto . ad exchange . floor price data的实例:没有字符串参数构造函数
首先要处理前面已经提到但还没有完全解决的问题。构造函数中发现错误时会发生什么情况? 例如,String 构造函数在 new 失败和无法取得保持 String 的内部表示所需空间时如何响应?问题是构造函数无法返回数值,如何让外部知道对象没有顺利构造呢,一种方案是返回没有正确构造的对象,希望对象使用者通过相应测试确定该对象是不能使用的对象。另一种方案是在构造函数之外设置一些变量。抛出的异常向外部传递失