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.