【问题标题】:Can’t import AWS library to Processing无法将 AWS 库导入到 Processing
【发布时间】:2020-02-08 00:10:09
【问题描述】:

这几天我一直在努力解决这个问题,但我开始放弃了...... 如何在 Processing 中导入和使用 Amazon AWS 2.0 开发工具包?

我想使用 Amazon DynamoDB 来为我在云中的游戏设置一些变量(高分、播放次数等)。我原本打算使用我拥有的 Raspberry Pi,但后来我发现 Amazon 免费提供了一些 DynamoDB 使用,并决定使用它。

我尝试只下载 jar 并将其放入处理窗口中(以便将其添加到“代码”文件夹中),使用 Maven 从 CMD 使用 DynamoDB 构建 2.0 SDK 的一部分,然后将在 Processing 的库文件夹中生成的文件夹(虽然我不确定放在那里的确切内容,但我尝试了所有内容的一些组合,只是 jar、src 文件夹......)。但是,当我开始在处理中编写import com.amazonaws.*; 时,它只会告诉我我要导入的库不存在...... 这是我最新的文件夹结构尝试: Folder structure attempt

非常感谢任何帮助,我对此很陌生,并且在处理中找不到任何专门关于这样做的教程!我很乐意提供任何需要的细节。 谢谢!

【问题讨论】:

  • 如果您能告诉我们为什么要导入 aws 库,这会有所帮助
  • 还说你使用的是哪个SDK 1.1 或2.0
  • 请改进你的问题,解释你想要做什么?你已经做了什么?如果你有一些代码发布它
  • @Emiliano SDK 版本已经存在,但我添加了一些关于我的目标和我尝试过的细节和图片,希望能稍微澄清一下这个问题!很抱歉,如果我仍然缺少重要的细节,我还在开始!谢谢! :D

标签: java amazon-web-services import amazon-dynamodb processing


【解决方案1】:

将新库添加到处理可能需要相当多的工作,具体取决于它需要多少依赖项。幸运的是,可以在 Processing 中添加对 AWS DynamoDB 的支持(使用 AWS SDK for Java 2.0)。这是一个显示一个简单示例的处理草图:

import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.GetItemOutcome;
import com.amazonaws.services.dynamodbv2.document.PrimaryKey;
//import com.amazonaws.services.dynamodbv2.document.Table;

com.amazonaws.services.dynamodbv2.document.Table highScoreTable;

void settings() {
  size(640, 480);
}

void setup() {
  DynamoDB dynamoDB = new DynamoDB(
        AmazonDynamoDBClientBuilder
            .standard()
            .withRegion(Regions.EU_NORTH_1)
            .build()
  );

  highScoreTable = dynamoDB.getTable("stackoverflow-q60122736");

  noLoop();
}

void draw() {
  PrimaryKey primaryKey = new PrimaryKey("id", "player-007");
  GetItemOutcome outcome = highScoreTable.getItemOutcome(primaryKey);
  String highScore = outcome.getItem().getString("high-score");

  fill(0);
  text("Hi AWS DynamoDB! The high score is " + highScore + ".", 10, 20);
}

这是手动安装处理库的官方指南:
https://github.com/processing/processing/wiki/How-to-Install-a-Contributed-Library

要让 Processing 找到与 DynamoDB 相关的 jar 文件,您需要在 Processing 库目录中创建一个新目录(我在我的系统上创建了这个目录:~/sketchbook/libraries/awsdynamodb111717)。在这个新目录中,您创建一个“库”目录,您可以在其中放置下面提到的 jar 文件。注意:主 AWS DynamoDB jar 文件的名称应该与顶级新目录的名称相同(在我的例子中:awsdynamodb111717)。

我下载了这九个 jar 文件以使 AWS DynamoDB 工作(处理似乎对名称中的破折号和点不满意,所以我删除了它们):

前两个 jar 文件来自 AWS 开发工具包。其他七个是依赖项。

在我的系统上,目录结构如下:

~/sketchbook/libraries/awsdynamodb111717
└── library
    ├── awscore111717.jar
    ├── awsdynamodb111717.jar
    ├── commonslogging12.jar
    ├── httpclient4511.jar
    ├── httpcore4413.jar
    ├── jacksonannotations2102.jar
    ├── jacksoncore2102.jar
    ├── jacksondatabind2102.jar
    └── jodatime2105.jar

最后,您需要将您的 AWS 凭证存储在某个地方(例如,在 ~/.aws/credentials 文件中;有关更多详细信息,请参阅 Java Code Examples)。

出于测试目的,我创建了一个“stackoverflow-q60122736”表,其中包含一个供处理草图检索的项目。处理3.5.3用于测试。

【讨论】:

  • 非常感谢您提供如此详细的回答!今天晚些时候我会尝试一下,让你知道它是否有效。再次感谢!
  • 是的,对它工作的代码进行了一些小的修改!我删除了 GetItemOutcome 和 PrimaryKey,因为它们不起作用,而是这样做:try { Item item = DataTable.getItem("SaveData", 1); text(item.getString("GamesPlayed"), 10, 20); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }(抱歉,无法弄清楚如何添加换行符...)无论如何,非常感谢您的帮助!
  • 虽然,我现在遇到了以下问题:当我尝试使用标准处理 loadTable 加载 CSV 时,它不起作用,并给我以下错误:类型不匹配,“processing.data.Table”与“com.amazonaws.services.dynamodbv2.document.Table”不匹配,有什么办法可以解决这个问题吗?谢谢!
  • 看起来系统对使用哪个 Table 类感到困惑。您可以尝试删除 import com.amazonaws.services.dynamodbv2.document.Table; 行并在使用 DynamoDB Table 类的任何地方使用 com.amazonaws.services.dynamodbv2.document.Table。以这种方式使用显式包应该可以解决它。
  • 对不起,我该怎么做?我有dynamoDB.getTable("ExampleTable");,如果我像这样添加它:DataTable = com.amazonaws.services.dynamodbv2.document.Table.dynamoDB.getTable("ExampleTable"); 它不起作用,只是告诉我The global variable dynamoDB doesn't exist,即使它刚刚在上面初始化并且可以在没有进行更改的情况下工作......再次感谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2016-06-20
  • 2013-06-28
相关资源
最近更新 更多