2017-07-03 2 views
0

Die Frage ist, wie XBee-API in Netbeans für die Verwendung mit anderen Projekten zu installieren?Getting XBee-API zu kompilieren und unter Netbeans

Die Antwort sollte einfach das Maven-Projekt von Github herunterladen und in Netbeans importieren. Kinderleicht. Die Realität ist nicht so einfach. Als Java-Noobie habe ich einen Tag gebraucht, um Xbee API unter Netbeans kompilieren und ausführen zu lassen.

XBee-API Version 0.9.1 von Github ist in einem Maven-Projekt, das direkt in Netbeans importiert, aber es wird nicht ohne weitere Arbeit kompilieren. Für erste Tests habe ich das Digi SDK Kit über ein USB/serielles Kabel an meinen win10 PC angeschlossen. Ich habe ein XBee S2C Digimesh-Gerät betrieben. Letztendlich ist der Grund, warum ich XBee_API verwende, die Kommunikation mit einem Raspberry Pi 3B über I2C.

Die erste zu testende XBee-API-Klasse ist "OpenCloseConnectionsTest" im Ordner "Test". Dies bietet sehr detaillierte Debug-Informationen, die bei der Fehlerbehebung helfen sollten. Wenn das läuft, dann sollte alles andere genauso gut funktionieren.

Erster Fehler war, weil die XBee-API POM-Datei kein Versionstag enthielt. Mein POM sieht jetzt so aus:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>2.3.2</version> 
<configuration> 
<source>1.5</source> 
<target>1.5</target>          
</configuration> 
</plugin> 

Als nächstes fehlten mir RxTx-Dateien. Auf meiner win10 Installation fehlte ich die folgenden Dateien in den folgenden Orten:

...\Program Files\Java\jkd1.6.0_01\jre\bin\rxtxSerial.dll 

...\Program Files\Java\jdk1.6.0_01\jre\lib\ext\RXTXcomm.jar 

ich diese von here heruntergeladen. Sobald ich diese Dateien an diesen Orten platziert habe, hat Netbeans sie ohne weitere Aktion/Konfiguration gefunden. Ich habe immer noch eine Warnung, weil diese Dateien nicht ganz die gleiche Version haben.

Schließlich musste ich den Quellcode bearbeiten, um die COM-Port-ID festzulegen. In meinem Fall war der XBee auf "COM5".

Ich konnte keine einzige Quelle finden, die alle oben genannten Informationen enthält. Viele Informationen, die ich fand, waren veraltet und einige waren einfach falsch. Hoffentlich hilft dieser Artikel anderen.

+0

Das sieht sehr hilfreich aus. Leider brauchen wir Antworten, um hier eine Frage zum Thema zu haben. Wären Sie in der Lage, dies zu optimieren, so dass das ursprüngliche Problem dargestellt wird, so dass es von einigen dieser Materialien in einer Antwort beantwortet werden kann? – halfer

+0

OK, das war eine Antwort auf eine Frage, aber ich habe es optimiert. Seit ich das geschrieben habe, habe ich festgestellt, dass die Github-Version 0.9.1 nicht die neueste ist. Die neueste Version 0.9.2 befindet sich im Maven Central Repository. Der Unterschied ist wichtig für mich, weil 0.9.2 eine Socket-Funktion enthält, die gemultiplexte Kommunikation über einen einzigen Kanal ermöglicht. Bis Version 0.9.2 war dieser Code getrennt von XBee-API. Jetzt muss ich herausfinden, wie man ein neues Projekt von Maven Central importiert und erstellt. – dazz

+0

Es ist leider immer noch nicht in unserem erforderlichen Q & A-Format. Die Antworten gehen unten und unterscheiden sich deutlich von Fragen. – halfer

Antwort

0

OK, also arbeite ich an einer Antwort auf meine Frage. Um die neueste Version 0.9.2 von XBee-API zu erhalten, muss ich ein Projekt vom Maven Central Repository in Netbeans installieren. Ich habe ein paar Posts gefunden, die mich auf here verwiesen haben. Ich fand das überhaupt nicht nützlich. Die Antwort mag irgendwo da sein, aber es setzt ein Verständnis von Maven und Ant voraus, das ich nicht habe, also habe ich experimentiert. Ich habe ein neues Maven-Projekt in Netbeans erstellt und dann den Inhalt der XBee-API-POM-Datei, die ich in Maven Central gefunden habe, kopiert und eingefügt, um den Inhalt der Standard-POM-Datei im neuen Maven-Projekt zu ersetzen.

Mein Verständnis ist, dass Maven alle benötigten Dateien auf der POM-Datei herunterladen wird, aber es nicht getan. Die meisten Dateien wurden heruntergeladen, aber nicht alle. Ich habe die folgenden Warnungen:

Some problems were encountered while building the effective model for com.rapplogic:xbee-api:jar:0.9.2 
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-gpg-plugin is missing. @ line 60, column 21 
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 51, column 21 
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ line 86, column 21 
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 99, column 21 

Und auch:

Failed to execute goal pl.project13.maven:git-commit-id-plugin:2.2.1:revision (get-the-git-infos) on project xbee-api: The plugin pl.project13.maven:git-commit-id-plugin:2.2.1 requires Maven version [3.1.1,) -> [Help 1] 

Dies könnte Sinn jedermann machen, die etwas über Maven weiß, aber das ist mir nicht. Es sieht so aus, als müsste ich Maven upgraden, das nur ein paar Monate alt ist, da ich so lange Java benutze.

Ich habe festgestellt, dass ich bereits die neuesten Maven ver 3.5.0. Die Fehlermeldung besagt, dass ich 3.1.1 brauche, daher ist ein Upgrade von Maven nicht möglich und das Zurückstufen auf 3.1.1 scheint eine schlechte Idee zu sein. Zeit, den Kurs zu wechseln und mit einer späteren Version des Plugins zu arbeiten.

Ich habe andere gefunden, die dieses Problem hatten here und here aber keine Lösungen. Ich habe diese Antwort here gefunden, die darauf hinweist, dass für jedes Plugin im POM keine Version angegeben ist. Es sieht also so aus, als ob Apache die Regeln geändert hat (es muss eine Version im POM angegeben werden), aber es wurde kein Tool zur Aktualisierung von POMs bereitgestellt. Dies scheint etwas zu sein, das innerhalb von Maven Central gescannt und korrigiert werden könnte. Das POM, das ich betreibe, ist nur 5 Monate alt und wird doch ohne manuellen Eingriff nicht gebaut.

Um das Versionsproblem zu beheben, musste ich Maven Central für jedes Plugin durchsuchen, um die neueste/richtige Versionsnummer zu erhalten und das POM zu ändern. Wie schlimm ist das !! Dieser Prozess löschte alle außer einem fatalen Fehler. Ich habe jetzt eine Sackgasse in der Frage beschrieben here

Die Lösung, die ich verfolgen werde, ist mit der älteren Version von XBee-API von Github arbeiten. Dies gibt mir den Quellcode und es baut ohne Problem auf. Ich plane, diesen Code zu ändern, um I2C statt RS232 zu verwenden. Es gibt auch Beta-Code für einen Socket-Server.

+0

Seit dem Schreiben des oben genannten, hat der Entwickler die neueste Version auf Github hochgeladen. Ich habe das heruntergeladen und konnte es kompilieren. Ich kann die Vorteile von Maven sehen, aber ich konnte es nicht unter Netbeans kompilieren. – dazz

Verwandte Themen