Java Bindings
The Java content in examples/language_bindings/java is a reference
integration over the CosmicSDK C API. It demonstrates one way to integrate
from Java, but it is not an official Java SDK package.
Example Layout
The Java examples mirror the native C/C++ blocking examples:
examples/language_bindings/java/
|- src/main/java/com/binho/cosmicsdk/
|- src/main/java/com/binho/cosmicsdk/examples/system/
|- src/main/java/com/binho/cosmicsdk/examples/i2c/
|- src/main/java/com/binho/cosmicsdk/examples/spi/
|- src/main/java/com/binho/cosmicsdk/examples/uart/
|- src/main/java/com/binho/cosmicsdk/examples/gpio/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/basic/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/daa/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/ccc/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/hdrddr/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/hjibi/
|- pom.xml
Windows
Navigate to the Java binding directory
cd /path/to/CosmicSDK/examples/language_bindings/java
Set `COSMICSDK_LIB_PATH`
Point it either to the directory containing the shared library, or to the full path of the library itself.
Command Prompt
set COSMICSDK_LIB_PATH=<path-to-CosmicSDK-library-or-lib-folder>
PowerShell
$env:COSMICSDK_LIB_PATH="<path-to-CosmicSDK-library-or-lib-folder>"
Build the Java bindings
mvn compile
Run one example
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.system.SystemExample
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i3c.basic.I3cBasicExample
macOS
Navigate to the Java binding directory
cd /path/to/CosmicSDK/examples/language_bindings/java
Set `COSMICSDK_LIB_PATH` and run one example
export COSMICSDK_LIB_PATH=/path/to/cosmicsdk/lib
mvn compile
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample
If loading fails because of missing transitive .dylib dependencies, set:
export DYLD_LIBRARY_PATH=$COSMICSDK_LIB_PATH:$DYLD_LIBRARY_PATH
Linux
Navigate to the Java binding directory
cd /path/to/CosmicSDK/examples/language_bindings/java
Set `COSMICSDK_LIB_PATH` and `LD_LIBRARY_PATH`, then run one example
export COSMICSDK_LIB_PATH=/path/to/cosmicsdk/lib
export LD_LIBRARY_PATH=$COSMICSDK_LIB_PATH:$LD_LIBRARY_PATH
mvn compile
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample
Notes
This Java wrapper uses JNA to bind directly to the CosmicSDK shared library.
On Linux,
LD_LIBRARY_PATHmay be required so the runtime can resolve transitive native dependencies (for examplelibhidapi-libusb.so.0).On macOS, if dependency resolution fails, use
DYLD_LIBRARY_PATH.Notification-driven examples (for example
i3c/hjibi,uartandgpio) register Java callbacks through the C notification API.This code is maintained as integration reference material and should be treated as a starting point for custom Java solutions.