AWS DynamoDB教程不会导入某些类

时间:2014-02-21 11:51:50

标签: android eclipse amazon-web-services amazon-dynamodb

我正在尝试在AWS网站上关注DynamoDB的教程:http://aws.amazon.com/articles/7439603059327617 我下载了该文件,将其导入Eclipse,导入了所有必需的库(或者字面上,github文件附带的所有库),但DynamoDBManager.java会继续给我带来可怕的"导入com.amazon。 ..无法解决"以下行的错误:

import com.amazonaws.services.dynamodbv2.model.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.model.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.model.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.model.DynamoDBScanExpression;
import com.amazonaws.services.dynamodbv2.model.DynamoDBTable;
import com.amazonaws.services.dynamodbv2.model.PaginatedScanList;

但是为所有其他类导入了库,例如

import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.DeleteTableRequest;
import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest;
import com.amazonaws.services.dynamodbv2.model.DescribeTableResult;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;

有没有其他人遇到过类似的问题?你能指导我一个正确的方向吗?!

提前谢谢你&阅读!

4 个答案:

答案 0 :(得分:1)

我不是百分百肯定,但在挖掘documentation之后,似乎已弃用了无法解析的类,并且不再包含在jar文件中...... 它们仍然存在于源代码文件夹中,但由于它们已被弃用,因此我认为没有必要尝试按照教程...

答案 1 :(得分:1)

Dynamo DB在迁移到DynamoDB V2时进行了许多重大更改(需要更改代码)。

您需要确保安装了最新的SDK并重新使用它 - 在eclipse中,您还需要提及要使用的AWS SDK(将其指向最新版本)。虽然eclipse AWS插件会自动下载最新的SDK,但它不会向我们更新版本号。您需要自己更新。

答案 2 :(得分:1)

我在遵循相关教程时遇到了类似的问题 http://mobile.awsblog.com/post/Tx1U4RV2QI1MVWS/Amazon-DynamoDB-on-Mobile-Part-1-Loading-Data https://github.com/awslabs/aws-sdk-android-samples/tree/master/DynamoDBMapper_UserPreference

我使用的是最新版本的Android Studio(0.8.1)和适用于Android的AWS SDK(1.7.1.1)。您似乎正在使用错误的包路径。

有关

import com.amazonaws.services.dynamodbv2.model.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.model.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.model.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.model.DynamoDBScanExpression;
import com.amazonaws.services.dynamodbv2.model.DynamoDBTable;
import com.amazonaws.services.dynamodbv2.model.PaginatedScanList;

您应该使用com.amazonaws.services.dynamodbv.model com.amazonaws.services.dynamodbv2.datamodeling。有关这些软件包的更多证据/文档,您可以查看dynmodbv2 here以查看它们不被弃用。更改您的包裹路径以反映这一点:

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBScanExpression;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
import com.amazonaws.services.dynamodbv2.datamodeling.PaginatedScanList;

并且您应该只需要使用以下之一:

  • AWS-Android的SDK-VERSION.jar。包含所有必要的文件(包括 所有受支持的AWS服务的第三方依赖项。所有课程 文件是在没有调试选项的情况下编译的。
  • AWS-Android的SDK-VERSION-debug.jar。包含调试所需的所有文件(包括第三方依赖项)。代码是在调试选项的基础上编译的,并保留了所有符号。

有关AWS SDK for Android中的jar的更多信息,请参阅官方文档here

其他潜在问题

(如果在下一次修订版中没有修复错误,则应仅适用于适用于1.7.1.1及更低版本的AWS SDK)

我的问题不同之处在于,即使我根据文档获得了正确的包路径,Android Studio的Intellij也无法找到dynamodbv2.datamodeling,即在键入import com.amazonaws.services.dynamodbv2.时没有建议数据模型,只有实用程序和模型。尝试import com.amazonaws.services.dynamodbv2.*也没有解决问题。因此,似乎数据模型包不包含在上面提到的两个包中,理论上它们应该包含在内。要获得数据模型并解决我遇到的相同对象(DynamoDBAttribute,DynamoDBHashKey等)的问题,我必须添加为库/文件依赖项aws-android-sdk-1.7.1.1-ddb-mapper.jaraws-android-sdk-1.7.1.1-ddb.jar并清理我的项目此时Intellij在输入import时可以看到数据模型,示例项目可以编译。

我想你知道如何在平台中导入库,就像你提到的导入一样,但要确保它只是你需要的单个文件,并且你不包括aws-android-sdk-1.7.1.1-debug.jar或{{1 }} 跟他们。例如,我的Android Studio模块gradle构建文件依赖关系如下所示:

aws-android-sdk-1.7.1.1.jar

我遇到的问题似乎是一个错误,其中ddb和ddb-mapper并未包含在全部包含dependencies { compile files('libs/aws-android-sdk-1.7.1.1-ddb-mapper.jar') compile files('libs/aws-android-sdk-1.7.1.1-ddb.jar') compile files('libs/aws-android-sdk-1.7.1.1-autoscaling.jar') compile files('libs/aws-android-sdk-1.7.1.1-cloudwatch.jar') compile files('libs/aws-android-sdk-1.7.1.1-core.jar') compile files('libs/aws-android-sdk-1.7.1.1-ec2.jar') compile files('libs/aws-android-sdk-1.7.1.1-elb.jar') compile files('libs/aws-android-sdk-1.7.1.1-s3.jar') compile files('libs/aws-android-sdk-1.7.1.1-sdb.jar') compile files('libs/aws-android-sdk-1.7.1.1-ses.jar') compile files('libs/aws-android-sdk-1.7.1.1-sns.jar') compile files('libs/aws-android-sdk-1.7.1.1-sqs.jar') compile files('libs/aws-android-sdk-1.7.1.1-sts.jar') } aws-android-sdk-1.7.1.1-debug.jar的内容中。因此,我已经报告了GitHub(https://github.com/aws/aws-sdk-android/issues/18)并希望下一次修订将解决此问题,它将不再具有相关性,您只需要aws-android-sdk-1.7.1.1.jaraws-android-sdk-1.7.1.1-debug.jar

答案 3 :(得分:0)

在AWS文档中编写了如何操作:

  

现有申请    AWS SDK for Android附带的示例是作为设置供您试用的独立项目提供的。要将AWS与现有应用程序一起使用,请执行以下步骤:

  1. 在Android项目目录中创建一个libs目录(如果尚不存在)。
  2. 复制所有服务的捆绑JAR或您希望使用的服务的特定JAR。您有3个选项:添加aws-android-sdk-VERSION-debug.jar。此JAR创建最大的APK,但在开发期间允许完整的堆栈跟踪。添加aws-android-sdk-VERSION.jar。在发布应用程序时,此JAR会创建一个较小的APK和一个简单的包。添加aws-android-sdk-VERSION-core.jar以及项目将使用的各个服务的JAR。此方法创建最小的APK,但需要更复杂的设置。请注意,复制捆绑的JAR和服务JAR都会导致错误。
  3. 在Eclipse中,转到您的项目,选择Properties - > Java构建路径 - >库,然后单击添加JAR。然后选择您添加到libs目录中的JAR。