首页 > 解决方案 > 为什么我的 Alexa Skills Kit 依赖项缺失?

问题描述

我在 github 上克隆了 Amazon 的 ASK java 存储库并在其上运行 mvn package ,它生成了以下 .jar:

ask-sdk-core-2.3.4.jar
ask-sdk-apache-client-2.3.4.jar
ask-sdk-dynamodb-persistence-adapter-2.3.4.jar
ask-sdk-lambda-support-2.3.4.jar
ask-sdk-servlet-support-2.3.4.jar
ask-sdk-2.3.4.jar

我注意到在尝试为https://developer.amazon.com/docs/custom-skills上的类进行某些导入时,例如
import com.amazon.speech.speechlet.servlet.SpeechServlet;
我收到一条消息,指出无法解析 com.amazon.speech,表明该文件不存在。然而,经过进一步调查,我注意到有一个 SkillServlet 类似乎基本上取代了 SpeechServlet 类,因为它能够做 SpeechServlet 可以做的所有事情,所以我认为开发人员网站还没有更新以反映这些变化.

然后我注意到,RequestHandler存储库中的一个类有一个返回类型对象的方法Optional< Response >。当我尝试Response使用以下导入进行导入时:
import com.amazon.ask.model.Response;
我收到一条错误消息,说明
The type com.amazon.ask.model.Response cannot be resolved. It is indirectly referenced from required .class files 这表明项目的类路径中不存在类定义,尽管已包含上述所有 .jar。我搜索并找不到模型目录。我的 Maven 构建失败了吗,我错过了任何 .jars 吗?我正在使用 Eclipse EE IDE,我知道它容易出错,但我已经清理了我的项目并重新启动了 IDE,但无济于事。

更新:我注意到 ask-sdk-core-2.3.4 目录中的 pom.xml 文件包含 ASK SDK 模型的依赖项,但它似乎没有获得依赖项。我还注意到虽然 ask-sdk-2.3.4 还应该包含 ask-sdk-core-2.3.4 所做的所有事情,因为后者在前者中被列为依赖项,所以我必须包含 ask-sdk-core 的 jar单独文件,否则 Eclipse 无法识别某些类。我认为这意味着maven失败了,所以我直接从mvnrepository.com下载了jar。知道为什么会发生这种情况吗?

标签: javamavenalexaalexa-skills-kit

解决方案


如果您使用ask-sdk-2.3.4.jar,那么它应该包含您需要的所有依赖项,就像您在更新简介中注意到的那样。当您在他们的 Github 存储库中查看 Hello World 示例时,pom.xml 仅包含ask-sdk-2.3.4.jar但不包含其中的其他依赖项ask-sdk-2.3.4.jarhttps://github.com/alexa/alexa-skills-kit-sdk-for-java/blob/2.0.x/samples/helloworld/pom.xml

对于您的错误消息Response,那是因为您缺少可以从 maven Central 找到的 ask-sdk-model jar。http://central.maven.org/maven2/com/amazon/alexa/ask-sdk-model/

我建议使用 maven 和 pom.xml,这样您就不必单独下载 jars。


推荐阅读