paho.client.mqttv3 in Eclipse installieren/einbinden

nonickatall

Mitglied
Hallo,

ich möchte in einem Java Projekt MQTT mit einem Mosquitto Server nutzen. Die Vorarbeiten sind alle gemacht und Mosquitto läuft. Nun benötige ich die entsprechenden "Bibliotheken" (Heißt das so?) in Eclipse. Also das ich den paho.client.mqttv3 per Import einbinden kann.

Soweit ich verstanden habe, kann ich diese in meine Projekt als .jar einbinden. Aber ich finde keinen entsprechenden Download im Wust des Netzes..

Oder geht das ganz anders?

Vielen Dank im Voraus.
 
K

kneitzel

Gast
So Dinge wie der paho mqtt3 client haben alle eine Homepage - da kann man einfach mal rein schauen:

Da findet sich dann auch ein Download Link, der dann zu ausführlicheren Informationen führt. Der Java Client liegt in der stable Version im maven central repository. Und da kann man es auch herunter laden so man eben ein maven oder gradle nutzt.
 

nonickatall

Mitglied
Hallo, und vielen Dank für deine Antwort. Ja, das hatte ich gesehen, dass es dort ein Maven Download gibt, aber ich möchte Maven eigentlich nicht verwenden, da ich für mich jetzt erst mal keinen Sinn sehe, und ich auch immer noch nicht genau verstanden habe, was der Sinn von Maven eigentlich sein soll. Was natürlich nicht heißt, dass keinen hat. ;)

Ich dachte halt es gibt irgendwo so einfach eine .jar die man dann bei Eclipse einbindet und gut is.

Die hab ich aber dann irgendwie nicht gefunden. Hätte ja sein können, dass das ganz einfach geht und man bei Eclipse die Dinger irgendwie automatisch runterladen kann, wie ein Repository bei Linux.

Deswegen meine Frage.

Jetzt weiß ich allerdings immer noch nicht wo ich diese Bibliothek herbekomme. o_O😁

Oder hat das mit Maven gar nichts zu tun und ich bekomme da meine .jar her ?

LG
Ralf
 
K

kneitzel

Gast
Du kannst Dir direkt vom Maven Repository die jar Datei herunter laden:
- Link aufrufen, den ich oben gebracht habe
- Downloads anclicken
- Dann in der Tabelle bei Java auf Maven Repository clicken
Dann werden die Versionen angezeigt (Derzeit eine Version) und am Ende der Zeile ist die Spalte Download. Wenn Du da auf das Symbol klickst, dann kannst du auswählen, was Du herunter laden willst. Neben dem eigentliche jar gibt es noch die pom (Da könnte man z.B. weitere Abhängigkeiten finden und so) und noch einiges mehr .. Aber Du willst einfach die jar Datei herunter laden.
 

LimDul

Top Contributor
Hallo, und vielen Dank für deine Antwort. Ja, das hatte ich gesehen, dass es dort ein Maven Download gibt, aber ich möchte Maven eigentlich nicht verwenden, da ich für mich jetzt erst mal keinen Sinn sehe, und ich auch immer noch nicht genau verstanden habe, was der Sinn von Maven eigentlich sein soll. Was natürlich nicht heißt, dass keinen hat. ;)

Ich dachte halt es gibt irgendwo so einfach eine .jar die man dann bei Eclipse einbindet und gut is.

Die hab ich aber dann irgendwie nicht gefunden. Hätte ja sein können, dass das ganz einfach geht und man bei Eclipse die Dinger irgendwie automatisch runterladen kann, wie ein Repository bei Linux.

Deswegen meine Frage.

Jetzt weiß ich allerdings immer noch nicht wo ich diese Bibliothek herbekomme. o_O😁

Oder hat das mit Maven gar nichts zu tun und ich bekomme da meine .jar her ?

LG
Ralf
Der Sinn von Maven ist, dass sowas eben von Hand nicht ganz einfach geht.

Denn wowas ist of nicht eine jar, die du runterladen musst. Sondern du musst runterladen:

* Die Jar für den mqtt Client
* Die Jars für alle externen Bibliotheken, die vom mqtt Client verwendet werden
* Alle externen Bibliotheken, die von diesen Bibliotheken verwendet werden
* Das ganze solange wiederholen, bist du alle Bibliotheken hast

Dabei aber bitte auch immer drauf achten, die jeweils korrekte Version runterzuladen und von jeder Bibliothek nur nur eine Version, im Zweifelsfall die neuste.

Eclipse kann sowas automatisch runterladen, wenn du maven nutzt. Dann trägst du das in deiner POM als Abhängigkeit ein und die Eclipse Integration von Maven sorgt dafür, dass das + alle benötigten weiteren Sachen in den jeweilig korrekten Version heruntergeladen werden.

Du hast Glück, der mqtt Client schein keine externen Abhänigkeiten zu haben, sprich es reicht das Jar.
 
K

kneitzel

Gast
Das automatische Laden der Abhängigkeiten geht aber nicht nur mit Maven.

Gradle bietet das auch. IntelliJ kann das auch, sprich: Wenn ich eine Library hinzu fügen will, dann kann er das automatisch herunter laden - incl. transitiver Abhängigkeiten.

Eclipse bietet das scheinbar nicht. Da hat man zwar auch ein Add Library wo man maven wählen kann, aber das geht wohl nur innerhalb von Maven Projekten.

Apache Ivy wäre dann aber noch als Tool zu nennen, dass Abhängigkeiten einfach herunter laden kann. Ivy ist zwar in erster Linie als Ergänzung von ant gedacht, aber es geht auch so (also z.B. einfach mal java -jar ivy.jar -? aufrufen).

Es gibt viele Wege, Die Empfehlung ist und bleibt ganz klar: Maven oder Gradle nutzen.

Aber wenn es manuell sein soll, dann geht es. Und wenn es Probleme mit transitiven Abhängigkeiten gibt, dann kann zB. auf ivy zurück gegriffen werden um die Dateien automatisch herunter zu laden.
 

nonickatall

Mitglied
Ich glaube ich bin einfach zu doof.. Welche von den vielen Dateien brauche ich?

Wenn ich hier schaue:


Da gibt es 9 Dateien die irgendwas mit Client und .jar heißen. Was ist der Unterschied zwischen md5 und sha1 und so weiter?

oder auf Maven erschließt sich einem das erst, wenn man auf den Download klickt, aber dann gibt es auch mehrere .jar Dateien..

Habe mir jetzt mal die einfache .jar runtergeladen in der Hoffnung, das es die richtige ist.

Habe sie im Projekt in Classpath eingebunden und die Fehlermeldungen sind weg. Bin mal gespannt ob es funktioniert..

Nachtrag: Funktioniert, und mein Projekt ist einen (mühsamen) Schritt weiter..

Vielen Dank an alle für die Hilfe..
 
K

kneitzel

Gast
Noch zur Erläuterung: md5 ist eine Datei, die nur einen md5 Hash enthält. sha1 ist etwas ähnliches, Die Dateien dienen dazu, zu verifizieren, dass die Datei korrekt herunter geladen wurde bzw. durch eine Signatur kann man prüfen, dass die Datei wirklich vom Autor stammt. (Wenn also ein Hacker Maven Central hacken würde, dann könnte er ja modifizierte jar Dateien hochladen oder so ..

Für Dich war aber - so wie Du es richtig gemacht hast - die jar Datei interessant.

Edit: Nicht, dass ich jetzt falsch verstanden wurde - sha1 ist nur ein Hash wie bei md5. Das ist keine Signatur! Die (PGP) Signatur befindet sich in der Regel in einer .asc Datei. Die enthält dann auch nicht nur einen kleinen HEX Code sondern etwas wie:
Code:
-----BEGIN PGP SIGNATURE-----
<Block aus Zeichen>
-----END PGP SIGNATURE-----
 
Zuletzt bearbeitet von einem Moderator:

nonickatall

Mitglied
Hallo,

meine Projekt hat eine Weile geruht, aber nun möchte ich es wieder aufnehmen und scheitere genau an der selben Stelle...o_O

Ich habe noch von damals eine Eclipse Version 2021-03 installiert und bekomme eine Fehlermeldung, wenn ich eine Klasse starte, die Paho Mqtt verwendet.

Java:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.eclipse.paho.client.mqttv3.internal.FileLock (file:/C:/Java/Mqtt/org.eclipse.paho.client.mqttv3-1.2.5.jar) to method sun.nio.ch.FileLockImpl.release()
WARNING: Please consider reporting this to the maintainers of org.eclipse.paho.client.mqttv3.internal.FileLock
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Jetzt habe ich gelesen, dass das an irgendwelchen Software-Ständen, Verknüpfungen oder sonst was liegen kann und dachte mir, ich lade mal Updates für die Eclipse Version. Das ist mir aber nicht gelungen, denn dann kommt ein Fehler, der besagt:

Code:
The Operation cannot be completed. See Detail

Cannot complete the install because some dependencies are not satisfiable
  Software being installed: WindowBuilder XML Core (requires Eclipse WTP/WST) 1.13.0.202308190851 (org.eclipse.wb.core.xml.feature.feature.group 1.13.0.202308190851)
  Software currently installed: JustJ OpenJDK Hotspot JRE Complete 15.0.2.v20210201-0955 (org.eclipse.justj.openjdk.hotspot.jre.full.feature.group 15.0.2.v20210201-0955)
  Cannot satisfy dependency:
    From: JustJ OpenJDK Hotspot JRE Complete 15.0.2.v20210201-0955 (org.eclipse.justj.openjdk.hotspot.jre.full 15.0.2.v20210201-0955)
    To: org.eclipse.equinox.p2.iu; a.jre.javase 0.0.0
  Cannot satisfy dependency:
    From: JustJ OpenJDK Hotspot JRE Complete 15.0.2.v20210201-0955 (org.eclipse.justj.openjdk.hotspot.jre.full.feature.group 15.0.2.v20210201-0955)
    To: org.eclipse.equinox.p2.iu; org.eclipse.justj.openjdk.hotspot.jre.full [15.0.2.v20210201-0955,15.0.2.v20210201-0955]
  Cannot satisfy dependency:
    From: WindowBuilder Core for XML GUI's 1.9.2.202308190851 (org.eclipse.wb.core.xml 1.9.2.202308190851)
    To: osgi.ee; (&(osgi.ee=JavaSE)(version=17))
  Cannot satisfy dependency:
    From: WindowBuilder XML Core (requires Eclipse WTP/WST) 1.13.0.202308190851 (org.eclipse.wb.core.xml.feature.feature.group 1.13.0.202308190851)
    To: org.eclipse.equinox.p2.iu; org.eclipse.wb.core.xml [1.9.2.202308190851,1.9.2.202308190851]

Ich habe in Eclipse eh nicht viel gemacht und habe gedacht, ich installiere Eclipse einfach neu. Ich habe also eine 2023-09 installiert und will dort mein Paho MQTT wieder einbinden und mache das genauso, wie ich das vorher gemacht habe, nämlich
Rechtsklick auf mein Projekt, dann unter Build Path/Libraries/Add External JARs und wähle genau die Bibliothek aus, die in dem anderen Eclipse auch installiert ist, wie ich nachgeschaut habe auch die aktuelle zumindest die der Version 3.

Was mich wundert ist : In der neuen Version gibt es unter Libraries einen "Modulepath" und einen "Classpath" in der alten nur die Libraries die eben eingebunden sind. Egal wo in es aber einbinde, also unter "Modulepath" oder "Classpath", kann ich die Bibliotheken nicht ansprechen. Es bleibt das rote x und Eclipse sagt:

Code:
The type  org.eclipse.paho.client.mqttv.client is not accessible.

Was mache ich falsch?
 

Ähnliche Java Themen

Neue Themen


Oben