This example uses the Java AWT class to generate graphics for the OLED SSD1306.
The demo displays two images: an emoji and a sine curve, both created using a BSH (Java BeanShell) script.
- Raspberry Pi or compatible SBC with I2C support
- SSD1306 OLED display connected via I2C
- OpenJDK 17 or higher
- Dart SDK installed
dart_peripherypackage
sudo apt-get install openjdk-17-jdk
Armbian supports higher JDK versions e.g.
sudo apt install openjdk-21-jre-headlessTry autodetection:
export JAVA_HOME=$(update-java-alternatives -l | awk '{print $3}')
echo $JAVA_HOMEjavac -cp ./lib/bsh-2.0b4.jar at/flutterdev/EmojiBMPGenerator.javagcc -shared -o libjvmbridge.so -fPIC jvm_bridge.c -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -L"$JAVA_HOME/lib/server" -ljvmexport LD_LIBRARY_PATH=$JAVA_HOME/lib/server:.dart i2c_ssd1306_java_awt.dartjava -cp ./lib/bsh-2.0b4.jar at/flutterdev/EmojiBMPGenerator.javamacOS:
gcc -o calljava -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/darwin" jvm_bridge.c -L"$JAVA_HOME/lib/server" -ljvmLinux:
gcc -o calljava -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" jvm_bridge.c -L"$JAVA_HOME/lib/server" -ljvmAdditional step for macOS to set the RPATH
install_name_tool -add_rpath $JAVA_HOME/lib/server/ ./calljavaOn macOS, a Dart program invoking the JVM may encounter a missing RPATH issue. Since you cannot apply install_name_tool directly to a Dart source file, you need to apply it to the compiled executable version of the Dart program:
dart compile exe test.dart
install_name_tool -add_rpath $JAVA_HOME/lib/server/ test