Hinweis: Ich bin seit Mitte September 2015 Raspberry, Raspbian und Linux-Neuling. Ich beschreibe hier, wie ich mein System konfiguriert habe und wie ich denke, dass die Zusammenhänge sind. Das muss nicht immer richtig sein und wird viele Lücken lassen. Sinn dieser Dokumentation ist es nicht, ein Raspbian-Tutorial zu schreiben, sondern eine Option zu besitzen, ein "versautes" System wieder herzurichten oder neu aufzusetzen.

Die folgenden Angaben beruhen auf der Raspbian-Version 2015-09-25, basierend auf "Debian Jessie", im Paket von NOOBS 1.4.2 auf einem Raspberry Pi 2 Modell B.

Software entwickeln auf und für den Raspberry Pi.

In­halts­ver­zeich­nis

1. Java installieren
2. Eclipse installieren
2.A Installation
2.B Konfiguration
2.C Installation testen
3. Pi4J installieren
3.A WriringPi installieren
3.B Pi4J installieren
3.C Eclipse "root-fähig" machen
3.D Neues Projekt anlegen



Java

Bei der  NOOBS 1.4.2 Version wird ein aktuelles Java Version 1.8 mit installiert. Hier muss nichts weiter gemacht werden. Ggf. sollte man dies noch einmal überprüfen:

01: $ java -version
02: java version "1.8.0"
03: Java(TM) SE Runtime Environment (build 1.8.0-b132)
04: Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)
05: $ javac -version
06: javac 1.8.0

Sind mehrere Java-Versionen installiert, kann die gültige mit

sudo update-alternatives --config java

ausgewählt werden:

$ sudo update-alternatives --config java
Es gibt 2 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).

  Auswahl      Pfad                                                 Priorität Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java        1063      automatischer Modus
  1            /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java        1063      manueller Modus
* 2            /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java   318       manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 1
update-alternatives: /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java wird verwendet, 
                     um /usr/bin/java (java) im manuellen Modus bereitzustellen

ACHTUNG: javac muss separat konfiguriert werden!

sudo update-alternatives --config javac

Eclipse

Installation

Eclipse installiert man mit folgender Anweisung:

sudo apt-get install eclipse

Die Installation dauert eine Weile, weil viel herunter geladen werden muss. Hierbei werden auch eine Reihe von Development Kits und sogenannten Perspectives gleich mit installiert, u.a. auch die für Java.

Sicherheitshalber kann man noch einmal separat verlangen, dass das Java-Development-Kit herunter geladen wird. Bei mir wurde nichts nachinstalliert.

sudo apt-get install eclipse-jdt

Durch die Installation wurde eine ältere Java-Version als Standard festgelegt.

$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-1~deb8u1+rpi1)
OpenJDK Zero VM (build 24.79-b02, mixed mode)

Dies kann man jedoch anpassen:

$ sudo update-alternatives --config java
Es gibt 2 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).

  Auswahl      Pfad                                                 Priorität Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java        1063      automatischer Modus
  1            /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java        1063      manueller Modus
  2            /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java   318       manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 2
update-alternatives: /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/bin/java wird verwendet, 
 um /usr/bin/java (java) im manuellen Modus bereitzustellen

$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

Das gleiche dann noch einmal mit javac.

Danach steht Eclipse im garfischen Desktop unter Menü -> Entwicklung -> Eclipse zur Verfügung:

Eclipse im Desktop


Konfiguration

Beim Start muss man ein wenig Geduld haben. Es dauert ein wenig, bis nach dem Anklicken etwas passiert. Als erstes zunächst das Verzeichnis für den Workspace abgefragt. Hier kann man gleich anhaken, dass dieser Workspace im Folgenden standardmäßig genutzt werden soll.

Workspace Eingabe

Es erscheint die "Welcome"-Seite. Hier muss man noch die passende Perspektive öffnen um mit Java loslegen zu können.

Perspektive auswählen

Danach erscheint die Java-Perspektive von Eclipse:

Java Perspektive

Zum Test sollte "Hello World" in der Raspberry-Version ausprobiert werden. Beim Anlegen des ersten Java-Projekts, muss man darauf achten, dass die korrekte JRE-Version eingestellt wird. Am besten nimmt man die Standardeinstellung, die auf die Version 1.8 hinausläuft (s.o.).

Versionsauswahl JRE


Installation testen

Java-Projekt HalloPi anlegen: Menü File -> New -> Java Project

Java Projekt anlegen

Klasse HalloPi anlegen: Menü File -> New -> Class:

Java Klasse anlegen

Es wird automatisch eine Code-Vorlage für eine Java-Klasse erstellt:

Automatisch erzeugte Code-Vorlage

Danach muss man nur noch die Ausgabe-Anweisung

System.out.println("Hallo Pi");

eingegeben werden (1). Wenn dann das Programm gestartet wird (2) erscheint an Position (3) die Ausgabe "Hallo Pi".

Hallo Pi


Pi4J installieren

Das Pi4J-Projekt ermöglicht unter Java die Verwendung der GPIO-Pins, dem UART, des I2C-Bus und der SPI-Schnittstelle. Es bietet  ein  bequem zu benutzendes, objektorientiertes I/O-API und I Bibliotheken für Java-Programmierer, um auf die volle I/O-Fähigkeiten der Raspberry Pi Plattform zugreifen zu können. Dieses Projekt abstrahiert die Low-Level Native-Integration und das Interrupt-Monitoring.

Pi4J basiert und und benötig die WiringPi-Bibliothek von Gordon Henderson. Diese muss zuerst installiert werden.

WiringPi benötigt für seine Ausführung root-Rechte. Zum Schluss wird deshalb gezeigt, wie man von Eclipse aus, Java-Programme mit root-Rechten starten kann, ohne das Eclipse selbst root-Rechte besitzt.

WiringPi installieren

WiringPi ist eine C-Bibliothek für Rapsbian und bietet I/O-Funktionen, die denen des Arduino-Wiring-Systems entsprechen. Auf der Homepage findet man sowohl eine ausführliche Installationsanleitung und als eine vollständige Referenz.

Die Installation ist recht einfach. Die folgende Beschreibung geht davon aus, dass man als User "Pi" angemeldet ist und sich im Verzeichnis /home/pi befindet.

WiringPi wird in GIT gehostet und kann von dort herunter geladen werden. Ist GIT noch nicht installiert, kann dies über die folgende Anweisung geschehen:

sudo apt-get install git-core

Die Quellen von WiringPi herunteladen:

git clone git://git.drogon.net/wiringPi

Installieren und Kompilieren aus dem /home/pi/wiringPi heraus:

./build

Test der Funktionsfähigkeit:

$ gpio -v
gpio version: 2.29
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Model 2, Revision: 1.1, Memory: 1024MB, Maker: Sony [OV]
  Device tree is enabled.
  This Raspberry Pi supports user-level GPIO access.
    -> See the man-page for more details
$ gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

Pi4J installieren

Die Installation ist sehr einfach und bedarf nur einer Anweisung:

curl -s get.pi4j.com | sudo bash

Nach erfolgreicher Installation teilt das Installationsscript mit, wo die Dateien gelandet sind:

...

The Pi4J JAR files are located at:
/opt/pi4j/lib

Example Java programs are located at:
/opt/pi4j/examples

You can compile the examples using this script:
sudo /opt/pi4j/examples/build

Please see http://www.pi4j.com for more information.

Eclipse "root-fähig" machen

Versucht man in Eclipse ein der Beispielprogramme aus der IDE heraus zu starten, erhält man folgende Fehlermeldung:

Fehlermeldung WinringPI

WiringPi muss root-Rechte besitzen! Man kann kann natürlich Eclipse mit root-Rechten starten, aber das ist recht gefährlich.

Mit folgendem Verfahren kann kann man erreichen, das die auszuführenden Programme mit root-Rechten gestartet werden können. Gefunden habe ich die Anleitung hierzu bei stackoverflow in einem Post mit dem Titel "How do I run my application as superuser from Eclipse? ". Leider ist sie für eine andere Java-Version. In diesem Abschnitt die übersetzte Version für JRE 1.8.

Das Ganze funktioniert wie folgt:

Um sich lange Pfad-Angaben zu sparen, wechselt man besten in den Pfad, in dem sich java befindet.

cd /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin

java umbenennen in java.ori.

sudo mv java java.ori

Eine neue Datei java erstellen mit folgendem Inhalt ...

#!/bin/bash
# file:  /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin/java
# descr: Starter for jdk. Runs jdk as root when 
#        cmd-line-arg "--run-as-root" is specified.
#
jre="/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/bin/java.ori"
run_as_root=false
args=

# Filter command-line argument
for arg in "$@"
do
  case "$arg" in
  --run-as-root)  run_as_root=true
                  ;;
  *)              args="$args $arg"
                  ;;

  esac
done

# Remove leading whitespaces
args=$(echo $args | sed -e 's/^[ \t]*//')

if $run_as_root
then
  echo "WARNING: Running as root!"
  echo executing "$jre $args"
  sudo $jre $args
else
  $jre $args
fi

oder von Ullis Roboter Seite herunter laden:

sudo wget http://ullisroboterseite.de/java

Die Datei ausführbar machen:

sudo chmod 0755 java

Eclipse starten, zu Window->Preferences->Java->Installed JREs wechseln und den bestehenden Eintrag duplizieren:

Neue JRE-Konfiguration anlegen

Im sich öffnenden Dialog folgende Spezifikationen für die neue Runtime machen:

Name: "root-jdk-8-oracle-arm-vfp-hflt" (Jeder beliebige andere Name tut es auch)

Default Argument: "--run-as-root"

JRE Spezifikationen anpassen

Nun existieren zwei JRE-Definitionen. Die angehakte ist übrigens die "Workspace default JRE".

Erweiterte Liste an JRE-Definitionen


Neues Projekt anlegen

Wenn nun ein neues Projekt gestartet wird, muss man die passende JRE aussuchen:

JRE bei neuem Projekt festlegen

Beim angelegten Projekt muss die Pi4J-Bibliothek noch in den Build Path eingetragen werden:

Pi4J-Bibliothek in den Build Path eintragen

Es müssen alle vier .jar Dateien aus dem Verzeichnis /opt/pi4j/lib hinzugefügt werden.

Komplette Bibliothek hinzufügen

Startet man nun das Projekt, dann läuft's ...

Erfolgreicher Programmstart

Anm.: Der "Xlib"-Fehler ist ein Problem mit der Monitor-Auflösung.

Bestehendes Projekt anpassen

Ein bestehendes Projekt passt man wie folgt an. Projekt markieren und das Eigenschaften-Fenster ("Properties" im Kontext-Menü) öffnen.

Java Projekt Eigenschaften

Doppelkick auf die JRE-Zeile führt zu einem weiteren Dialog, mit der man die JRE einstellen kann:

JRE bei Java-Projekt festlegen

Fertig ....