Java-Nutzung

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
jk-berlin
Beiträge: 3
Registriert: 15.01.2022, 14:45
System: Alternative CCU (auf Basis OCCU)

Java-Nutzung

Beitrag von jk-berlin » 15.01.2022, 15:18

Hallo,

ich würde gerne auf meiner Rasperrymatic (läuft ohne Probleme seit 2017 auf einem Pi 3 Model B Rev 1.2, aktuell läuft 3.61.7.20211218) ein Java-Programm ausführen.
Dazu habe ich ein Verzeichnis angelegt /usr/local/jk2022
In dem Verzeichnis habe ich die HelloWorld.java mit folgenden Inhalt kopiert:

Code: Alles auswählen

class HelloWorld{  
    public static void main(String args[]){  
     System.out.println("Hello World");  
    }  
}  
Sowohl beim Verzeichnis als auch beim HelloWorld.java sind folgende Rechte gesetzt: 755

Wenn ich per SSH als root auf dem Verzeichnis /usr/local/jk2022 bin und
/opt/java-azul/bin/java /usr/local/jk2022/HelloWorld.java
aufrufe, erhalte ich die Fehlermeldung:
Error: Could not find or load main class .usr.local.jk2022.HelloWorld.java

Die gleiche Datei läuft bei unter Windows einwandfrei.

Frage 1: Hat jemand eine Idee, was da schief läuft? Sollte ich ein anderes Verzeichnis verwenden? Fehlen Berechtigungen?

Frage 2: Ist /usr/local das richtige Verzeichnis dafür? Ich habe keine Dokumentation gefunden, wo "private" Dateien abgelegt werden dürfen, so dass sie beim Update nicht überschrieben werden. Auch wenn ich das Ganze unter /usr/local/etc/config/addons/www/jk2023 ausprobiere: Gleiche Fehlermeldung.

Ich freue mich über jeden Hinweis!

Gruß,
Jürgen

(Hintergrund: Was ich eigentlich machen will:
  • Ich hab mir ein ESP mit E-Ink-Display (https://inkplate.io) gekauft, auf dem ich verschiedenen Homematic-Infos anzeigen will.
  • Dazu soll die Inkplate alle 15 Minuten eine Grafik mit Homematic-Werten (Temperatur) herunterladen und anzeigen.
  • Auf der Inkplate kann ich nur Grafiken, aber kein HTML anzeigen.
  • Zur Lösung habe ich unter redmatic in einen "Template-Node" einen HTML-Text abgelegt. Redmatic ersetzt mir die verschiedenen Platzhalter mit Werten aus Temperaturfühlern, aktuelles Datum etc.
  • Redmatic legt die html-Datei im Dateisystem der Rasperrymatic ab, z. B. unter /usr/local/jk2022
  • Redmatic würde mir dann die Grafik ausliefern, oder ich lasse sie von Java gleich so ablegen, dass ich direkt per URL aufrufen kann.

Das ist ein bisschen "durch die Brust ins Auge", aber mir ist kein besserer Weg eingefallen.
Ich würde alles gerne auf dem Raspi erledigen, weil der rund um die Uhr läuft.
Falls jemand einen besseren Weg kennt, eine 800x600-Grafik aus HomeMatic-Werten zu generieren, freue ich mich über Hinweise.)

Benutzeravatar
Rosagallica
Beiträge: 81
Registriert: 22.07.2018, 15:54
System: CCU
Hat sich bedankt: 14 Mal
Danksagung erhalten: 6 Mal

Re: Java-Nutzung

Beitrag von Rosagallica » 15.01.2022, 16:02

jk-berlin hat geschrieben:
15.01.2022, 15:18
Hallo,

ich würde gerne auf meiner Rasperrymatic (läuft ohne Probleme seit 2017 auf einem Pi 3 Model B Rev 1.2, aktuell läuft 3.61.7.20211218) ein Java-Programm ausführen.
Dazu habe ich ein Verzeichnis angelegt /usr/local/jk2022
In dem Verzeichnis habe ich die HelloWorld.java mit folgenden Inhalt kopiert:

Code: Alles auswählen

class HelloWorld{  
    public static void main(String args[]){  
     System.out.println("Hello World");  
    }  
}  
Sowohl beim Verzeichnis als auch beim HelloWorld.java sind folgende Rechte gesetzt: 755

Wenn ich per SSH als root auf dem Verzeichnis /usr/local/jk2022 bin und
/opt/java-azul/bin/java /usr/local/jk2022/HelloWorld.java
aufrufe, erhalte ich die Fehlermeldung:
Error: Could not find or load main class .usr.local.jk2022.HelloWorld.java
Die Java-Laufzeit-Umgebung java kann nur kompilierte .class-Dateien (im Dateisystem oder aus .jar-Dateien) ausführen, keinen Sourcecode. Den Sourcecode *.java musst du erst durch den Compiler z.B. javac schicken, der die .class-Dateien erzeugt. Auf der Raspberrymatic scheint kein JDK sondern nur ein JRE mit an Bord zu sein. Also am einfachsten wohl unter Windows kompilieren und dann das Kompilat auf die Raspberrymatic bringen.

jk-berlin
Beiträge: 3
Registriert: 15.01.2022, 14:45
System: Alternative CCU (auf Basis OCCU)

Re: Java-Nutzung

Beitrag von jk-berlin » 15.01.2022, 17:02

Das habe ich sofort ausprobiert - leider das gleiche Ergebnis:
  • HelloWorld.java auf Windows kompiliert
  • HelloWorld.class nach /usr/local/etc/config/addons/www/jk2023 kopiert und Rechte auf 755 gesetzt
  • /opt/java-azul/bin/java -cp /opt/java-azul/lib /usr/local/etc/config/addons/www/jk2023/HelloWorld.class aufgerufen
Ergebnis: Error: Could not find or load main class .usr.local.etc.config.addons.www.jk2023.HelloWorld.class

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Java-Nutzung

Beitrag von jmaus » 15.01.2022, 18:34

jk-berlin hat geschrieben:
15.01.2022, 17:02
Ergebnis: Error: Could not find or load main class .usr.local.etc.config.addons.www.jk2023.HelloWorld.class
Tut mir leid wenn ich es so deutlich sage: Du solltest vmtl. erst einmal einen Java Grundkurs machen wenn du schon über solche grundsätzlichen Dinge stolperst. Sowas lernt man in der erste Stunde eines Java Kurses. Und darüberhinaus gehört das hier in das RaspberryMatic Forum definitiv nicht! Die Java JRE in RaspberryMatic, ist da und funktioniert entsprechend. Wie man ein Java Programm kompiliert und eine JRE verwendet gehört hier nicht her.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

jk-berlin
Beiträge: 3
Registriert: 15.01.2022, 14:45
System: Alternative CCU (auf Basis OCCU)

Re: Java-Nutzung

Beitrag von jk-berlin » 15.01.2022, 18:43

Hallo Jens,

schön, dass du dich meldest.

Bei dieser Gelegenheit: Danke für dein Engagement für Rasperrymatic!

Ich programmiere seit 20 Jahren Java, daran kann es nicht liegen.
Wie gesagt, unter Windows funktioniert es.
Und HelloWorld ist ja nun auch keine Herausforderung.

Aus meiner Sicht liegt es an der hier vorhandenen Linux-Umgebung, die ich aber nicht genau kenne. Und ich bin auch kein Linux-Profi.
Irgendwie scheint opt/java-azul/bin/java die Datei /usr/local/etc/config/addons/www/jk2023/HelloWorld.class nicht zu finden - trotz Pfadangabe.

Gruß,
Jürgen

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Java-Nutzung

Beitrag von jmaus » 15.01.2022, 19:20

Gehört hier trotzdem nicht her und versuch erst einmal Erfahrung auf einer Linux-VM (Ubuntu) oder ähnlich zu sammeln würde ich sagen wenn du schon nicht mit der Java JRE unter RaspberryMatic klar kommst.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „RaspberryMatic“