我遇到了亚马逊AWS工具包中基于Java的DynamoDBMapper的问题,该问题抛出“无法实例化类”异常错误。这是我第一次尝试使用DBMapper,所以我不完全确定我有一切设置正确。我的代码可以发现如下:DynamoDBMapper - 无法实例化类
public static void main(String[] args) {
dynamoDB = new AmazonDynamoDBClient(credentials);
DynamoDBMapper mapper = new DynamoDBMapper(dynamoDB);
PStatus data = mapper.load(PStatus.class, "online", new Integer(1655));
String assigned = data.getAssigned();
System.out.println(assigned);
}
@DynamoDBTable(tableName = "projectStatus")
public class PStatus {
private Integer projID;
private String status;
private String assigned;
@DynamoDBHashKey(attributeName = "status")
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
@DynamoDBRangeKey(attributeName = "projID")
public Integer getId() { return projID; }
public void setId(Integer projID) { this.projID = projID; }
@DynamoDBAttribute(attributeName = "assigned")
public String getAssigned() { return assigned; }
public void setAssigned(String assigned) { this.assigned = assigned; }
}
基本上,我只是想执行一个GetItemRequest然后绘制出一个特定的属性,但我越来越指着线PStatus data = mapper.load(PStatus.class, "onFarm", new Integer(1655));
错误。我究竟做错了什么?
编辑:下面精确异常:
Exception in thread "main" com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Failed to instantiate class
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.createKeyObject(DynamoDBMapper.java:325)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.load(DynamoDBMapper.java:313)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.load(DynamoDBMapper.java:212)
at test.TestGet.main(TestGet.java:20)
Caused by: java.lang.InstantiationException: test.TestGet$PStatus
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.createKeyObject(DynamoDBMapper.java:323)
能否请您编辑和添加完整的异常堆栈?最初是一个InstantiationException或IllegalAccessException?你可以创建一个新的PStatus实例吗? – 2013-04-28 10:16:26
用确切的例外进行了更新。第20行是我之前提到的。他们并没有详细讨论如何使用映射器获取数据,只是指出使用load方法是可能的。他们给load方法的例子只包括我得到错误的那一行(而不是其余部分);唯一的区别是类名(我已经尝试了他们使用的名称;没有骰子)。我可能只是想出了一些可以尝试的东西;我会告诉你,如果我的想法是正确的,或者一旦我尝试它... – DGolberg 2013-04-29 00:48:14