Ошибка Maven TinyB: пакет tinyb не существует

Я пытаюсь создать программу, в которой мне нужно использовать Aws sdk и библиотеку TinyB. По этой причине я решил использовать maven для создания проекта и разрешения зависимостей. Однако я более недели безуспешно пытался скомпилировать проект с помощью пакета TinyB. Я был бы очень признателен, если бы кто-нибудь научил меня тому, что я делаю не так.

Я получаю следующее сообщение об ошибке:

C:/Users/fran/Desktop/RSSI_AWS_PROJECT/BleDistanceMeasurement/src/main/java/org/tfm/app/BleMng.java:[7,1] package tinyb does not exist

И мой pom.xml:

<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.tfm.app</groupId>
  <artifactId>BleDistanceMeasurement</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>BleDistanceMeasurement</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk</artifactId>
      <version>1.11.327</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-iot</artifactId>
      <version>1.10.34</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-iot-device-sdk-java</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-iot-device-sdk-java-samples</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.kura</groupId>
      <artifactId>tinyb</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>tinyb</id>
      <url>https://repo.eclipse.org/content/groups/releases/</url>
    </repository>
  </repositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

Я открыл проект с Eclipse IDE, чтобы узнать, что происходит, но я видел, что eclipse правильно распознает зависимости.

Сканирование зависимостей TinyB

Зависимости проекта

Библиотеку TinyB я скачал и скомпилировал отсюда:

https://github.com/intel-iot-devkit/tinyb

Но репозиториев maven непосредственно из Intel нет, поэтому я добавил одну форму eclipse kura:

<!-- https://mvnrepository.com/artifact/org.sputnikdev/bluetooth-manager-tinyb -->
<dependency>
    <groupId>org.sputnikdev</groupId>
    <artifactId>bluetooth-manager-tinyb</artifactId>
    <version>1.0</version>
</dependency>

Это дает мне проблемы при компиляции, кажется, что репозиторий не был загружен. Но фодер с банкой существует (он показывает указанную ранее ошибку).

Я сделал несколько небольших программ с помощью TinyB, и они отлично работают, поэтому программа скомпилирована и установлена ​​правильно. Проблема в том, что я не использую maven в этих маленьких программах (я просто добавляю импорт и указываю на .jar при выполнении). Нравится:

sudo java -cp examples/java/HelloTinyB.jar:/usr/lib/lib/java/tinyb.jar HelloTinyB

Я также пробовал этот другой репозиторий maven:

<!-- https://mvnrepository.com/artifact/org.sputnikdev/bluetooth-manager-tinyb -->
<dependency>
    <groupId>org.sputnikdev</groupId>
    <artifactId>bluetooth-manager-tinyb</artifactId>
    <version>1.3.2</version>
</dependency>

В этом случае он распознает зависимости и компилируется. Проблема в том, что при попытке запустить программу выдает ошибку:

java.lang.RuntimeException: Native library is out of date. Please update the native library. at tinyb.BluetoothManager.getBluetoothManager (BluetoothManager.java:317)

Большое спасибо за Вашу помощь.

да, я тоже установил банку отдельно безуспешно. Он установлен правильно и отображается в папке .m2, но при компиляции не распознается.

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

Ответы 1

Я вижу, вы тоже пытаетесь использовать затмение Куры. Удалось ли вам заставить его работать?

У меня такая же проблема.

Кстати, я вижу, что, возможно, ваши зависимости недействительны, поскольку у sputnikdev есть библиотека поверх tinyB, но, наконец, у меня такая же проблема, как и у вас. Это мои основные зависимости:

<!-- https://mvnrepository.com/artifact/org.sputnikdev/org.eclipse.smarthome.binding.bluetooth.transport.tinyb -->
<dependency>
    <groupId>org.sputnikdev</groupId>
    <artifactId>bluetooth-manager</artifactId>
    <version>1.5.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/intel-iot-devkit/tinyb -->
<dependency>
    <groupId>intel-iot-devkit</groupId>
    <artifactId>tinyb</artifactId>
    <version>0.5.1</version>
</dependency>
<dependency>
    <groupId>org.sputnikdev</groupId>
    <artifactId>bluetooth-manager-tinyb</artifactId>
    <version>1.3.3</version>
</dependency>

Я обнаружил, что TinyB be уже используется в Kura в качестве основной библиотеки для управления Bluetooth. Надеюсь, вы найдете ее полезной. eclipse.github.io/kura/dev/bluetooth-le-apis.html

raivel33 30.04.2020 09:10

Но ... зависит ли это от инфраструктуры OSGI? А можно без OSGI запустить? У вас есть пример? Большое спасибо!

Alberto Soto 02.05.2020 13:25

OSGi и Kura - разные вещи. OSGi - это среда Java, которая позволяет динамически разрабатывать приложения с использованием пакетов вместо монолитной архитектуры. Kura - это платформа для шлюзов Интернета вещей. Одна из его главных особенностей - то, что он основан на OSGi. Kura предлагает различные уже встроенные функции, такие как графический интерфейс, подключение и т. д. Одной из этих функций является связь BLE, которая в данном случае была реализована с использованием библиотеки TinyB, но она уже встроена. Вам нужно только научиться использовать его API. Если вы установите kura, вы увидите, что пакет TinyB уже установлен и работает.

raivel33 09.05.2020 13:18

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