为什么我的Alexa Skills Kit依赖项丢失了?

时间:2018-06-26 21:26:04

标签: java maven alexa alexa-skills-kit

我在github上克隆了Amazon的ASK Java存储库并运行了     mvn package 在它上面,并产生了以下.jars:

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 这表明尽管包含了所有上述.jars,但类定义在项目的类路径中并不存在。我经过搜索,无法找到模型目录。我的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。知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

如果您使用ask-sdk-2.3.4.jar,则它应包括您需要的所有依赖项,就像在更新说明中注意到的那样。当您在其Github存储库中查看Hello World示例时,pom.xml仅包含ask-sdk-2.3.4.jar,但不包含ask-sdk-2.3.4.jar包含的其他依赖项。 https://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,这样就不必单独下载jar。