Ошибка компиляции Gradle «Не удалось найти com.github.everit-org.json-schema:org.everit.json.schema:1.11.1». в ткани Hyperledger

Я новичок в Hyperledger Fabric. Когда я создаю чейнкод, написанный на java, после установки на одноранговых узлах из контейнера cli, что-то не так:

FAILURE: Build failed with an exception.

* What went wrong:  
Could not resolve all files for configuration ':compileClasspath'.  
> Could not find com.github.everit-org.json-schema:org.everit.json.schema:1.11.1.
  Searched in the following locations:  
      file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
      file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar
      https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
      https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar  
  Required by:
      project : > org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:1.4.2

Я думал, что это может быть проблема с репозиторием maven, но когда я использую gradle в терминале моего хоста, он работает нормально, например:

fabric@ubuntu:~/fabric1.4/fabric-samples/chaincode/master-liuqi/java$ sudo /opt/gradle/bin/gradle -b build.gradle build

Task :compileJava
Note: /home/fabric/fabric1.4/fabric-samples/chaincode/master-liuqi/java/src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

BUILD SUCCESSFUL in 0s  
2 actionable tasks: 2 executed

ниже мой build.gradle, он такой же, как и пример цепочки Hyperleger.

plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}

group 'org.hyperledger.fabric-chaincode-java'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.+'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null

    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.example.SimpleChaincode'
    }
}

Есть ли способ решить эту проблему? и в чем разница в запуске сборки gradle в хосте и контейнере?

Вы запускаете это из-за прокси?

Siva 01.06.2020 19:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
4 837
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я просмотрел репозиторий maven (https://mvnrepository.com/artifact/org.hyperledger.fabric-chaincode-java/fabric-chaincode-shim/1.4.2) и обнаружил, что этой зависимости нет в центральном репозитории maven. После добавления репозитория в build.gradle следующим образом:

repositories {
    mavenLocal()
    mavenCentral()
    maven {
        url "https://repository.mulesoft.org/nexus/content/repositories/public/"
    }
}

это работает хорошо сейчас. так как я не знаком с gradle, мне все еще интересно, почему я могу успешно построить на хосте, а не в контейнере cli?

«cli» динамически использует образ докера «hyperledger/fabric-javaenv» для компиляции кода. Вам необходимо обогатить этот «hyperledger/fabric-javaenv» всеми зависимостями, чтобы ваша сборка «cli» также была успешной.

Siva 01.06.2020 19:17

Было бы полезно отредактировать этот ответ, чтобы вместо этого использовать репозиторий maven { url 'https://jitpack.io' }, как показано в ответе @Benas, к сожалению, очередь редактирования заполнена.

James Taylor 27.09.2021 18:24

Спасибо. Для версии, которую я ищу (1.12.2), это репо, в котором она есть. Я должен обновить и указать на то, что является самым новым, и указать на самое последнее (похоже, 1.14), не знаю, где это.

Hodglem 10.03.2022 21:54

На самом деле, вы должны использовать

repositories {
    mavenLocal()
    mavenCentral()
    maven {
        maven { url 'https://jitpack.io' }
    }
}

репо вместо репо из другого ответа, поскольку это репо рекомендуется в официальной документации json-schema.

Цитировать:

Add the JitPack repository and the dependency to your pom.xml as follows:

(см.: https://github.com/everit-org/json-схема)

Да, maven {url "jitpack.io"}. работал.

user518066 16.09.2021 13:09

Я пробовал оба этих URL-адреса, но не работал... не знаю почему. репозитории { maven { url "репозиторий.mulesoft.org/nexus/content/repositories/public" } maven { url 'jitpack.io' } }

Raj 04.12.2021 17:02

@Raj Я думаю, что URL-адреса репо должны начинаться с https://, поэтому попробуйте добавить его на jitpack.io.

Benas 25.03.2022 15:31

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