3

Я попытался обновить свой dynamodb с помощью aws, но я не могу создать объект dynamodb или объект таблицы, так как import com.amazonaws.services.dynamodbv2.**document**.* не регистрирует документ, но он считывает все остальные импорты:импорт com.amazonaws.services.dynamodbv2.document.DynamoDB; часть документа импорта не может быть решена.

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); 
+0

Вы используете Android SDK для Android? Я только что проверил, и доступные API-интерфейсы DDB станут гораздо меньшим подмножеством: https://github.com/aws/aws-sdk-android/tree/master/aws-android-sdk-ddb, https: // github .com/aws/aws-sdk-android/tree/master/aws-android-sdk-ddb-mapper. Не знаю, почему. Возможно, вы захотите напрямую использовать Java SDK. https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-gradle.html Следуйте этому руководству и используйте что-то вроде 'compile 'com.amazonaws: aws-java-sdk -dynamo'' Это предоставит остальное: https://github.com/aws/aws-sdk-java/tree/master/aws-java-sdk-dynamodb/ – Jameson

+0

Такая же проблема, вы ее решаете? – Utopia

ответ

0

Я предполагаю, что вы, вероятно, попытался это уже, но он работал на меня, так что я буду говорить об этом все равно: я убедился, что был добавлен AWS SDK для библиотеки Java, а затем я обновил проект. Теперь все работает!

Я закрыл свой проект и возобновил его много раз без успеха, но обновление проекта сделало трюк. Удачи.