我们正在使用Retrofit 2,并在Android 4.x版本中的“异常”下面处理此问题,并在其他Android版本中正常工作。在下面添加了代码
Caused by java.lang.NoClassDefFoundError: javax/annotation/Nullable
at java.lang.reflect.Field.getAnnotation(Field.java)
at java.lang.reflect.Field.getAnnotation(Field.java:212)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldNames(ReflectiveTypeAdapterFactory.java:72)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:159)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
at com.google.gson.Gson.getAdapter(Gson.java:423)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
at com.google.gson.Gson.getAdapter(Gson.java:423)
at retrofit2.converter.gson.GsonConverterFactory.requestBodyConverter(GsonConverterFactory.java:71)
at retrofit2.Retrofit.nextRequestBodyConverter(Retrofit.java:282)
at retrofit2.Retrofit.requestBodyConverter(Retrofit.java:262)
at retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:710)
at retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:336)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:204)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at $Proxy1.getMagGold(Unknown Source)
at com.amazon.DynamoDBOne.getMagGold(DynamoDBOne.java:82)
at com.task.SyncUserDatas.getUserGoldData(SyncUserDatas.java:330)
at com.task.SyncUserDatas.doInBackground(SyncUserDatas.java:292)
at com.task.SyncUserDatas.doInBackground(SyncUserDatas.java:57)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
下面是代码
public interface ApiServices{
@POST("getGold")
Call<GetMagGoldResponse> getMagGold(@Header("Authorization") String Authorization, @Body UserId userId);
}
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(<URL>)
.client(getLogClient())
.build();
ApiServices service = retrofit.create(ApiServices.class);
service.getMagGold(token, userId).execute().body();
答案 0 :(得分:1)
将此行放入gradle.build中,您就很好了。
package com.minlu.basedao;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
public class BaseDao {
private static String USER = "minlu_****";
private static String PASSWORD = "*******3aFCDi";//自己创建数据库所设置的密码
private String MYSQL_URL="jdbc:mysql://47.244.***.***:**/minlu_****";
private static Connection conn = null;
PreparedStatement pre = null;// 预编译对象
public Connection getConn() {
return conn;
}
public static void setConn(Connection conn) {
BaseDao.conn = conn;
}
public BaseDao()
{
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
System.out.println("加载驱动成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("找不到驱动程序类 ,加载驱动失败!");
}
try {
conn = DriverManager.getConnection(MYSQL_URL, USER, PASSWORD);//创建数据库链接对象
System.out.println("数据库链接成功2");
} catch (SQLException es) {
// TODO Auto-generated catch block
System.out.println("数据库连接失败!!!"+es.getMessage());
}
}
}