Javaで標準以外のライブラリを使用したプログラムを他のPCで動かす方法を教えてください。


JavaでRS-232Cを使うため
http://www.rxtx.org/

RXTXcomm.jar goes in \jre\lib\ext (under java)
rxtxSerial.dll goes in \jre\bin
を入れて

http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html
で紹介されている
SerailPortHandler.java
DumbTerminal.java
をダウンロードして、それぞれ「javax.comm」を「gnu.io」に変え
自分のPCでは動くようになったのですが、これを他のPCで動かすにはどうしたらいいでしょうか。

JREはインストール済みのPCでJavaコマンドは実行可能ですが、
java DumbTerminal COM06 を実行すると
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEven
tListener
となります。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/11/11 19:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント27pt

他の PC で、

http://www.rxtx.org/

RXTXcomm.jar goes in \jre\lib\ext (under java)

rxtxSerial.dll goes in \jre\bin

を入れて

をやって無い、に一票。

id:garyo

それはそうなんですが、javaでは動的リンクのライブラリを一緒にして配布する手段が無いんですか?

ライブラリファイル渡して、ライブラリのフォルダに使う人がコピーするんですか?

2010/11/04 22:40:24
id:asuka645 No.2

回答回数856ベストアンサー獲得回数97

ポイント27pt

jarでアーカイブして配布してはいかがでしょう。

id:garyo

RXTXcomm.jar と rxtxSerial.dll をDumbTerminal.class とSerailPortHandler.classと同梱して、jarでアーカイブすればいいですか?

classファイルと同じフォルダにあればdllも参照可能ですか?

【追記】

RXTXcomm.jarを解凍して、「Main-Class: DumbTerminal」と書いたファイル(MANIFEST.MF)を作成して、

jar cvfm jterm.jar MANIFEST.MF DumbTerminal.class SerialPortHandler.class gnu

を実行して

jterm.jar と同じフォルダにrxtxSerial.dllを置き

java -jar jterm COM6

で動きました。ありがとうございます。


dllをjarに入れることはできませんか?

2010/11/05 09:32:51
id:a-kuma3 No.3

回答回数4974ベストアンサー獲得回数2154

ポイント26pt

dllをjarに入れることはできませんか?

マニフェストファイルに、Bundle-NativeCode を書くとできるみたい。

Manifest-Version: 1.0
Bundle-NativeCode: rxtxSerial.dll
Main-Class: DumbTerminal

http://forums.sun.com/thread.jspa?threadID=145895&tstart=59

id:garyo

ありがとうございます。

さっそく試してみましたが、うまく行きませんでした。

何か設定が足りていないのかも知れません。


java -jar jterm.jar COM6

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while

loading gnu.io.RXTXCommDriver

Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java

2010/11/05 13:21:51
  • id:a-kuma3
    > それはそうなんですが、javaでは動的リンクのライブラリを一緒にして配布する手段が無いんですか?
    > ライブラリファイル渡して、ライブラリのフォルダに使う人がコピーするんですか?

    「配布」と「インストール」が、ごっちゃになってない?
    java に限らず、どんな言語で作ったって、他者が使ったライブラリを使ってれば、一緒に配布するか、別途、手に入れてね、ってなるのは仕方ない。

    使ってるライブラリが、別途、配布を許しているライセンスなら、一緒に配布すれば良いだけじゃない?
  • id:garyo
    InstallShield みたいなのをJavaではどうやってやるのかと思った質問です。
  • id:garyo
    Javaでプログラム作って、誰かに使ってもらうとき、
    「JREをインストールして、○○フォルダに○○.jarをコピーして○○フォルダーに××.dllをコピーして使って下さい」っていうのも面倒なので、何かインストーラーのような物があるんだろうなと思って質問したのですが。
  • id:a-kuma3
    回答できんので、コメントで。

    > さっそく試してみましたが、うまく行きませんでした。
    > 何か設定が足りていないのかも知れません。

    jterm.jar には、rxtxSerial.dll は入っているでしょうか?
    jterm.jar 内で、根っこというか、root 直下に入ってる必要があると思います。
  • id:t-wata
    java自体はインストーラなんて無いです。
    C++やCにインストーラが無いのと同じです。
    それら言語と同じように、Javaでも普通のインストーラSDK(Install ShieldやNSISとか)を使ってインストーラを作れます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません