LoginSignup
1
1

More than 5 years have passed since last update.

SierraでRXTXを使おうとしたらハマった

Last updated at Posted at 2016-12-10

macOS SierraのEclipseでArduinoとシリアル通信しようとしたらハマったお話.

実行環境

  • OS : macOS Sierra
  • java : java1.7
  • Eclipse : Eclipse Java EE IDE for Web Developers.(version: neon)

RXTX

概要

Arduinoなどのマイコンとシリアル通信を行うためのライブラリ.
Windows, Mac, Linuxがサポートされている.
以下のページを参考に進めていきました.
http://cho-kotan.blogspot.jp/2012/10/javaavrmacjavaavr.html

ダウンロード

以下のページのrxtx-2.1-7-bins-r2.zipをダウンロード
http://rxtx.qbang.org/wiki/index.php/Download

ファイルの移動

ダウンロードしたファイルを展開し,下記コマンドによって外部ライブラリ用のフォルダにダウンロードしたファイルを移動します.

$ 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/

また,RXTXの排他制御のためのディレクトリが必要であるため,下記コマンドを実行

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

eclipseでパスを通す

  1. eclipseにて,現在のプロジェクトフォルダを右クリック -> [プロパティ]
  2. [Javaのビルド・パス] -> [ライブラリ]
  3. [外部JARの追加] -> 先ほどのExtensionsディレクトリのRXTXcomm.jarを選択
  4. [ビルドパス上のJAR及びクラス・フォルダ]に出現したRXTXcomm.jarの中の[ネイティブライブラリー・ロケーション]に先ほどのExtensionsディレクトリを選択
  5. OK

実行

参考にした下記URLのソースコードをコピペしそのまま実行.
http://cho-kotan.blogspot.jp/2012/10/javaavrmacjavaavr.html

すると,以下のようなエラー

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

リンクに関するエラーが出ているが,gnu.io.RXTXcommDriverを読んでいる最中にエラーが出たと怒られているのでパスはきちんと通っているらしい.
何度やっても動かなかったので調査.

バージョンの問題だった

Sierraだから対応できていないのか,javaが対応できていないのかわからず,とりあえず色々調べて見たら下記のページを見つけました.
http://blog.brianhemeryck.me/installing-rxtx-on-mac-os-mountain-lion/

記事によると,どうやら公式のページからダウンロードしたファイルのlibrxtxSerial.jnilibはJava5にしか対応しておらず,Mountain LionからのJava 6以降では同じようなエラーが起こることがあるみたいです(Eclipseの環境によるかもしれませんが...).

そのため,先ほどのExtensionsファイルのlibrxtxSerial.jnilibを削除し,下記ページでJava 6対応のものが配布されているのでダウンロード.
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/

再度実行

先ほどの設定でEclipseにて外部JARファイルのパスの設定はしてあるので,上記のコマンドが終わった時点でそのままEclipseで実行.

無事コンソールにてArduinoから読み取った値が表示されました.

結論

公式ページからダウンロードしたライブラリファイルは新しいJavaのバージョンをサポートしていなかった.

参考ページ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1