# paho.client.mqttv3 in Eclipse installieren/einbinden



## nonickatall (2. Jun 2021)

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.


----------



## kneitzel (2. Jun 2021)

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








						Eclipse Paho | The Eclipse Foundation
					

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.




					www.eclipse.org
				




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 (2. Jun 2021)

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. 😁

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

LG
Ralf


----------



## kneitzel (2. Jun 2021)

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 (2. Jun 2021)

nonickatall hat gesagt.:


> 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.
> 
> ...


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.


----------



## kneitzel (2. Jun 2021)

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 (2. Jun 2021)

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

Wenn ich hier schaue:





__





						Index of /repositories/paho-snapshots/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.1.2-SNAPSHOT
					






					repo.eclipse.org
				




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..


----------



## kneitzel (2. Jun 2021)

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:

```
-----BEGIN PGP SIGNATURE-----
<Block aus Zeichen>
-----END PGP SIGNATURE-----
```


----------

