6

我尝试使用 aws 更新我的 dynamodb,但我无法创建 dynamodb 对象或表对象,因为import com.amazonaws.services.dynamodbv2.**document**.*它没有注册文档,但它读取了所有其他导入:

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ListTablesResult;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.TableDescription;

以下是我正在使用的完整课程:

import android.Manifest;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.model.UpdateItemRequest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.UpdateItemSpec;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.TableCollection;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.UpdateItemSpec;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.TableCollection;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ListTablesResult;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.TableDescription;

public class LoadingPage extends AppCompatActivity {
    static AmazonDynamoDBClient dynamoDB;
    LocationManager locationmanager;
    private TrackGPS gps;
    double longitude;
    double latitude;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loading_page);
        gps = new TrackGPS(LoadingPage.this);
        DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(
                new ProfileCredentialsProvider()));

        Table table = dynamoDB.getTable("ProductCatalog");

        Map<String, String> expressionAttributeNames = new HashMap<String, String>();
        expressionAttributeNames.put("#A", "Authors");
        expressionAttributeNames.put("#P", "Price");
        expressionAttributeNames.put("#I", "ISBN");

        Map<String, Object> expressionAttributeValues = new HashMap<String, Object>();
        expressionAttributeValues.put(":val1",
                new HashSet<String>(Arrays.asList("Author YY","Author ZZ")));
        expressionAttributeValues.put(":val2", 1);   //Price

        UpdateItemOutcome outcome =  table.updateItem(
                "Id",          // key attribute name
                101,           // key attribute value
                "add #A :val1 set #P = #P - :val2 remove #I", 
                expressionAttributeNames,
                expressionAttributeValues);
4

2 回答 2

1

我有一个类似的问题,我了解到,包的可用性和/或源存储库会随着时间而改变。因此,如果无法解决导入问题,以下过程可能会有所帮助。

  1. 标识提供依赖项的包。
  2. 找到包的来源。
  3. 使用 Gradle 或 Maven 配置源。

对于我的回答,我com.amazonaws:DynamoDBLocal:1.11.477在 Kotlin 下验证了您想要的导入。

MVNRepository 的工件页面中,我选择了View All

这使我找到了具有以下 URL 的存储库源:

https://repository.mulesoft.org/nexus/content/repositories/public/com/amazonaws/DynamoDBLocal/1.11.477/

由于我使用的是 Kotlin,因此我repositories在我build.gradle.kts的 for Gradle 中添加了相应的存储库数据。

// Local DynamoDB.

repositories {
    maven(url = "https://repository.mulesoft.org/nexus/content/repositories/public")
}

dependencies {
    implementation ("com.amazonaws:DynamoDBLocal:1.11.477")
}

对于非本地情况,这些导入也可以从以下位置的包中得到满足:

http://central.maven.org/maven2/com/amazonaws/aws-java-sdk-dynamodb/1.11.564/

因此,以下条目也有效:

// Remote DynamoDB.

repositories {
    mavenCentral()
}

dependencies {
    implementation("com.amazonaws:aws-java-sdk-dynamodb:1.11.564")
}

在为本地或远程版本配置我的项目后,我能够验证所有包含“文档”的导入都可用。

于 2019-06-05T02:07:34.320 回答
0

我假设您可能已经尝试过,但它对我有用,所以我还是要提一下:我确保已添加 AWS SDK for Java 库,然后我刷新了项目。现在一切正常!

我关闭了我的项目并重新打开了很多次,但都没有成功,但刷新项目就成功了。祝你好运。

于 2017-01-25T01:39:24.967 回答