1

我目前正在关注 Vespa 教程,但遇到了HTTP API 用例的问题。mvn install package从到一切​​正常vespa-deploy prepare target/application.zip

调用vespa-deploy activate正常返回,但应用程序永远不会在localhost:8080. 查看/opt/vespa/logs/vespa/vespa.log(在 VM 中)可以找到以下堆栈跟踪:

Container.com.yahoo.jdisc.core.StandaloneMain   error   Unexpected: 
  exception=
    java.lang.IllegalArgumentException: Could not create a component with id 'com.mydomain.demo.DemoComponent'.
    Tried to load class directly, since no bundle was found for spec: sample-app-http-api-searcher. 
    If a bundle with the same name is installed, there is a either a version mismatch or the installed bundle's version contains a qualifier string.
    at com.yahoo.osgi.OsgiImpl.resolveFromClassPath(OsgiImpl.java:48)
    ...

sample-apps这是使用带有git 存储库的干净克隆的新 Docker 映像发生的。准备和激活基本示例以及其他 http 示例确实可以无缝运行。

我检查了源代码和 xml 文件是否存在明显问题,但对失败的原因和位置一无所知。

target/application.zip包含

application/components/http-api-using-searcher-1.0.1-deploy.jar
application/hosts.xml
application/searchdefinitions/basic.sd
application/services.xml

jar 本身确实包含一个com/mydomain/demo/DemoComponent.class文件(除其他外)。

github 跟踪器上可能相关的问题:https ://github.com/vespa-engine/vespa/issues/3479我也会在那里发布这个问题的链接,但我仍然认为这是一个值得提出的问题,在至少要在vespa标签后面采取一些行动:)

4

1 回答 1

3

应用程序的 services.xml 文件中的包 ID 错误。请从 git 中拉取应用程序并立即重试。另见公关:https ://github.com/vespa-engine/sample-apps/pull/18

简要说明:bundle="<id>"services.xml 中声明中给出的捆绑包 ID 必须与捆绑包清单中的“捆绑符号名称”匹配。当使用 Vespa 捆绑插件构建捆绑包时,符号名称默认与项目的 artifactId 相同。因此,在大多数情况下,您只需验证 bundle id 是否与 artifactId 匹配。

于 2017-10-16T14:27:54.047 回答