Vespa教程 - 使用IllegalArgumentException无法激活HTTP API用例

时间:2017-10-16 14:03:37

标签: vespa

我目前正在关注Vespa教程,并遇到HTTP API use-case的问题。从mvn install packagevespa-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)
    ...

使用全新的Docker镜像以及sample-apps git存储库的干净克隆。准备和激活基本样本以及其他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标记:)

1 个答案:

答案 0 :(得分:3)

应用程序的services.xml文件中的bundle id错误。请从git中提取应用程序,然后立即重试。另见PR:https://github.com/vespa-engine/sample-apps/pull/18

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