Внедрение учетных записей Corda с использованием java не удалось при создании учетных записей из-за ошибки зависимостей - PullRequest
0 голосов
/ 04 марта 2020

Мы пытаемся создать учетные записи, используя java, а для создания учетных записей нам нужно использовать библиотеку "accountservice" (com.r3.corda.lib.accounts.workflows.accountService => kotlin), но в java мы не можем получить его таким же образом (com.r3.corda.lib.accounts.workflows.services.AccountService => java). Итак, мы импортировали указанную библиотеку в java код и попытался внедрить, используя автоматическую аннотацию, но он выдает ошибку ниже: Компиляция с JDK Java API компилятора. /home/lti-blockchain/Desktop/teju/corda_practice/corda_accounts/Corda-accounts/workflows/src/main/java/com/lti/blockchain/corda/flows/CreateAccountFlow.java:7: ошибка: пакет или. springframework.beans.factory.annotation не существует import org.springframework.beans.factory.annotation.Autowired; ^ /home/lti-blockchain/Desktop/teju/corda_practice/corda_accounts/Corda-accounts/workflows/src/main/java/com/lti/blockchain/corda/flows/CreateAccountFlow.java:23: ошибка: не удается найти символ @Autowired ^ символ: класс Расположение Autowired: класс CreateAccountFlow Примечание. Некоторые входные файлы используют или отменяют устаревший API. Примечание: Перекомпилируйте с -Xlint: не рекомендуется для деталей. Примечание. Некоторые входные файлы используют непроверенные или небезопасные операции. Примечание: Перекомпилируйте с -Xlint: не проверено для деталей. 2 ошибки: рабочие процессы: скомпилировать Java (поток [работник задачи для ':' поток 3,5, основной]) завершен. Потребовалось 0,196 сек. ОТКАЗ: Сбой сборки с исключением. * Что пошло не так: выполнение задачи не выполнено ': рабочие процессы: компиляция Java'.

Компиляция не удалась; подробности смотрите в сообщении об ошибке компилятора.

1 Ответ

0 голосов
/ 04 марта 2020
  1. Ваш вопрос отформатирован и его очень трудно прочитать; в следующий раз, пожалуйста, используйте стиль уценки (в частности, 3 обратных ключа для окружения блоков кода: https://www.markdownguide.org/extended-syntax/#fenced -code-blocks ).
  2. AccountService - это интерфейс, а не класс, поэтому вы не можете его использовать; вам нужно использовать класс реализации KeyManagementBackedAccountService.
  3. Чтобы получить услугу, используйте это в своем потоке:
getServiceHub().cordaService(KeyManagementBackedAccountService.class);
Вам не нужен сервис для создания учетных записей, сервис - это просто утилита для упрощения работы. Если вы откроете его, вы увидите, что он вызывает потоки, которые вы можете использовать сами:
// As you can see, this service method calls "CreateAccount()" flow.
@Suspendable
override fun createAccount(name: String): CordaFuture<StateAndRef<AccountInfo>> {
    return flowAwareStartFlow(CreateAccount(name))
}
// So inside your flow you can do this instead of calling the service method:
subFlow(new CreateAccount("some username"));
...