[JAVA] J'étais accro à l'utilisation de RXTX avec Sierra

Une histoire à laquelle j'étais accro en essayant de communiquer en série avec Arduino en utilisant Eclipse sur macOS Sierra.

Environnement d'exécution

RXTX

Aperçu

Une bibliothèque pour la communication série avec des micro-ordinateurs tels que Arduino. Windows, Mac et Linux sont pris en charge. J'ai procédé en me référant à la page suivante. http://cho-kotan.blogspot.jp/2012/10/javaavrmacjavaavr.html

Télécharger

Téléchargez rxtx-2.1-7-bins-r2.zip sur la page suivante http://rxtx.qbang.org/wiki/index.php/Download

Déplacer des fichiers

Extrayez le fichier téléchargé et déplacez le fichier téléchargé vers le dossier de la bibliothèque externe à l'aide de la commande suivante.

$ cd <download_folder>/rxtx-2.1-7-bins-r2
$ sudo cp RXTXcomm.jar /Library/Java/Extensions/
$ sudo cp Mac_OS_X/librxtxSerial.jnilib /Library/Java/Extensions/

De plus, étant donné qu'un répertoire pour le contrôle exclusif de RXTX est requis, exécutez la commande suivante.

$ sudo mkdir /var/lock
$ sudo chmod 777 /var/lock

Passer le chemin avec éclipse

  1. Dans eclipse, cliquez avec le bouton droit sur le dossier du projet actuel-> [Propriétés]
  2. Chemin de construction Java-> Bibliothèque
  3. [Add External JAR] -> Sélectionnez RXTXcomm.jar dans le répertoire Extensions.
  4. Sélectionnez le répertoire Extensions pour [Native Library Location] dans RXTXcomm.jar qui apparaît dans [JAR and Class Folder on Build Path].
  5. OK

Courir

Copiez le code source de l'URL suivante à laquelle vous vous êtes référé et exécutez-le tel quel. http://cho-kotan.blogspot.jp/2012/10/javaavrmacjavaavr.html

Ensuite, l'erreur suivante

java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib: dlopen(/Library/Java/Extensions/librxtxSerial.jnilib, 1): no suitable image found.  Did find:
/Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver

J'obtiens une erreur concernant le lien, mais il semble que le chemin fonctionne correctement parce que j'étais en colère d'avoir une erreur en lisant gnu.io.RXTXcommDriver. Cela n'a pas fonctionné, peu importe le nombre de fois où je l'ai essayé, alors j'ai enquêté dessus.

C'était un problème de version

Je ne savais pas s'il n'était pas pris en charge parce que c'était Sierra ou que java n'était pas pris en charge, alors j'ai cherché diversement et j'ai trouvé la page suivante. http://blog.brianhemeryck.me/installing-rxtx-on-mac-os-mountain-lion/

Selon l'article, il semble que le fichier librxtxSerial.jnilib téléchargé à partir de la page officielle ne supporte que Java 5, et des erreurs similaires peuvent se produire dans Java 6 et versions ultérieures de Mountain Lion (Eclipse's Cela peut dépendre de l'environnement ...).

Par conséquent, supprimez le librxtxSerial.jnilib du fichier Extensions et téléchargez la version compatible Java 6 sur la page suivante. http://blog.iharder.net/2009/08/18/rxtx-java-6-and-librxtxserial-jnilib-on-intel-mac-os-x/#comment-163295

$ rm /Library/Java/Extensions/librxtxSerial.jnilib
$ cp <download_folder>/librxtxSerial.jnilib /Library/Java/Extensions/

Courez à nouveau

Comme le chemin du fichier JAR externe a été défini dans Eclipse dans le paramètre précédent, exécutez-le dans Eclipse tel qu'il est lorsque la commande ci-dessus est terminée.

La valeur lue à partir d'Arduino était affichée sur la console en toute sécurité.

Conclusion

Le fichier de bibliothèque téléchargé à partir de la page officielle ne prenait pas en charge la nouvelle version Java.

Page de référence

Recommended Posts

J'étais accro à l'utilisation de RXTX avec Sierra
Ce à quoi j'étais accro en utilisant rspec sur des rails
J'étais accro au démarrage de sbt
J'étais accro à la mise à jour de la déclaration dans MyBatis
J'étais étrangement accro à l'utilisation de l'API Stream de Java avec Scala
J'étais accro à la réécriture sur @ SpringApplicationConfiguration-> @SpringBootTest
J'étais accro à la méthode du rouleau
J'étais accro au test Spring-Batch
Une note quand j'étais accro à la conversion d'Ubuntu sur WSL1 en WSL2
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
J'étais accro à faire onActivityResult () avec DialogFragment
J'étais accro à NoSuchMethodError dans Cloud Endpoints
J'étais accro au record du modèle associé
Une histoire à laquelle j'étais accro lors de l'obtention d'une clé qui a été automatiquement essayée sur MyBatis
Ce à quoi j'étais accro lors de l'introduction de la bibliothèque JNI
Ce que j'ai corrigé lors de la mise à jour vers Spring Boot 1.5.12 ・ Ce à quoi j'étais accro
J'étais accro à la configuration de default_url_options avec l'introduction de la conception de Rails
J'étais accro au réglage de laradock + VSCode + xdebug
Ce à quoi j'étais accro avec l'API REST Redmine
L'histoire à laquelle j'étais accro lors de la création de STS
Mémo Android - J'étais accro à la permission
[Circle CI] Une histoire à laquelle j'étais accro chez Start Building
Je veux juste écrire Java en utilisant Eclipse sur mon Mac
Ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
J'ai essayé d'afficher le calendrier sur la console Eclipse en utilisant Java.
J'étais accro au paramètre API version min23 de registerTorchCallback
Mémorandum: Ce à quoi j'étais accro quand j'ai frappé l'API de comptabilité freee
Une histoire à laquelle j'étais accro à deux reprises avec le paramètre de démarrage automatique de Tomcat 8 sur CentOS 8
J'étais accro à l'idée de toucher MySQL 8.0 avec un sentiment de 5.7. Problème de configuration My.cnf
J'étais accro à un simple test de Jedis (bibliothèque Java-> Redis)
Problèmes auxquels j'étais accro lors de la création de l'environnement digdag avec docker
Enregistré parce que j'étais accro à l'entrée standard de la classe Scanner
Je souhaite installer PHP 7.2 sur Ubuntu 20.04.
J'étais accro au scrollview car je ne pouvais pas appuyer sur la taille variable UIView
[Circle CI] J'étais accro au test automatique de Circle CI (rails + mysql) [Memo]
J'étais un peu accro à la connexion ssh de mac à linux (ubuntu)
J'ai essayé de construire AdoptOpenjdk 11 sur CentOS 7
J'étais accro aux tests unitaires avec l'opérateur de tampon dans RxJava
J'étais accro à ne pas pouvoir me connecter à AWS-S3 à partir du conteneur Docker
J'étais un peu accro à la comparaison S3 Checksum, alors prenez note.
SpringSecurity J'étais accro à essayer de me connecter avec un mot de passe haché (résolu)
J'ai essayé d'utiliser Junit avec Mac VScode Maven
J'ai essayé d'implémenter un serveur en utilisant Netty
Ce à quoi j'étais accro lors du développement d'une application Spring Boot avec VS Code
Notez que j'étais accro au traitement par lots avec Spring Boot
Lors de la création d'une application personnelle, je me demandais si je devais la faire en utilisant haml
Le fichier CSV que j'ai pu télécharger a soudainement commencé à apparaître sur la page.
La partie à laquelle j'étais accro dans "Introduction à Ajax dans les applications Web Java" de NetBeans
Notez que j'étais accro aux paramètres du projet Android d'IntelliJ IDEA
Je souhaite l'implémenter en plus lors de l'utilisation de kotlin sur un site exécutant Java
Je veux utiliser NetBeans sur Mac → Je peux l'utiliser!
J'ai construit un environnement Ubuntu sur Windows 10 en utilisant WSL2.
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK