Я пытаюсь создать программу, в которой мне нужно использовать 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, но при компиляции не распознается.




Я вижу, вы тоже пытаетесь использовать затмение Куры. Удалось ли вам заставить его работать?
У меня такая же проблема.
Кстати, я вижу, что, возможно, ваши зависимости недействительны, поскольку у 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
Но ... зависит ли это от инфраструктуры OSGI? А можно без OSGI запустить? У вас есть пример? Большое спасибо!
OSGi и Kura - разные вещи. OSGi - это среда Java, которая позволяет динамически разрабатывать приложения с использованием пакетов вместо монолитной архитектуры. Kura - это платформа для шлюзов Интернета вещей. Одна из его главных особенностей - то, что он основан на OSGi. Kura предлагает различные уже встроенные функции, такие как графический интерфейс, подключение и т. д. Одной из этих функций является связь BLE, которая в данном случае была реализована с использованием библиотеки TinyB, но она уже встроена. Вам нужно только научиться использовать его API. Если вы установите kura, вы увидите, что пакет TinyB уже установлен и работает.