Vespa Tutorial - не удается активировать вариант использования HTTP API с помощью IllegalArgumentException

В настоящее время я следую учебным пособиям по Vespa и столкнулся с проблемой варианта использования HTTP API. Все отлично работает от mvn install package к vespa-deploy prepare target/application.zip,

Призыв к vespa-deploy activate возвращается нормально, но приложение никогда не становится доступным на localhost:8080, Смотря на /opt/vespa/logs/vespa/vespa.log (в виртуальной машине) можно найти следующую трассировку стека:

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

И сама банка содержит com/mydomain/demo/DemoComponent.class файл (между прочим).

Потенциально связанная с этим проблема на трекере github: https://github.com/vespa-engine/vespa/issues/3479 Я также опубликую ссылку на этот вопрос, но я все же думаю, что это стоит вопроса SO, хотя бы получить какое-то действие за vespa тег:)

1 ответ

Решение

Идентификатор пакета в файле services.xml приложения неверен. Пожалуйста, извлеките приложение из git и повторите попытку сейчас. Смотрите также PR: https://github.com/vespa-engine/sample-apps/pull/18

Краткое объяснение: идентификатор пакета, указанный в bundle="<id>" объявление в services.xml должно соответствовать "Bundle-SymbolicName" в манифесте пакета. Когда пакет был собран с помощью пакета-плагина Vespa, символическое имя по умолчанию совпадает с artifactId проекта. Следовательно, в большинстве случаев вам просто нужно убедиться, что идентификатор пакета соответствует artifactId.

Другие вопросы по тегам