0

私はJavacygwinを初めて使用します。私は両方の詳細な知識を持っていません。

助けが必要です..

私は自分の問題を説明しようとする簡単な手順です。

1)tinyOSに取り組んでいます。ワイヤレスセンサーネットワークに使用されるオープンソースOS。通信(PCからセンサー)で動作するJavaライブラリを提供します

2)私はcigwinを介してWindowsXP環境に取り組んでいます。

3)アプリケーションを開発しています。このアプリケーションには、「シリアルフォワーダー」と呼ばれる1つのJavaインターフェイスが必要です。これは、提供されているライブラリですぐに利用できます。以前は、このインターフェイスを手動で開始し(コマンド** "java net.tinyos.sf.SerialForwarder")**を入力してから、このインターフェイスを使用するアプリケーションを起動していました。しかし今、私は自分のアプリケーションを独立させたいと思っています。ユーザーは、この背景のcygwinコマンドについて知っておく必要があります。

4)だから私のJavaアプリケーションで私は使用しました

" Runtime.getRuntime()。exec(" java net.tinyos.sf.SerialForwarder) "。

5)これはエラーを出さず、インターフェースを開始しません。

私は正しい方向に進んでいますか?
ランタイム実行コマンドを使用している場合、このコマンドがcigwinインターフェイスを介して呼び出されていることを確認するにはどうすればよいですか?

また...batファイルを書きたい場合..実行されるコマンドを与えることができる..これらのコマンドがcmd.exeではなくcigwin..を介して与えられていることを確認するにはどうすればよいですか..助けてください.. 自分 。

4

2 に答える 2

0

申し訳ありませんが、悪いニュースがあります... Cygwinを使用したTinyOSは、​​本当にひどいものです。たとえうまく機能したとしても、それは非常に遅く、信頼性が低くなります(CygwinまたはTinyOSが最後に使用してからずっと良くなった場合を除きます)。WindowsでTinyOS用に開発する必要がある場合は、UbunTOS + VirtualBoxをダウンロードすることを強くお勧めします。

そうは言っても、私はあなたを助けようとします...うまくいけば、Java、Cygwin、およびUNIXの知識を向上させます...

1.)ガッチャ。
2.)また落とし穴。
3.)

JARで提供されるクラスを使用して、やりたいことを何でも実行するJavaプログラムを作成できます。必要に応じて、 launch4jまたはその他のラッパーを使用して、プログラムを実行可能ファイルとしてラップできます。それは本当に必要ではありませんが。必要に応じて、JARを呼び出すシェルスクリプトを作成することもできます。

4.)

ガッチャ。はい、別の実行可能ファイルを呼び出してPIPEを介して通信することも可能ですが、クラスをロードして直接通信する方がおそらく高速です。

5.)

コマンドラインパラメータを指定していないため、おそらく何も実行されていません。返されるProcessオブジェクトには、プロセスとの通信を可能にするgetInputStream()メソッドとgetOutputStream()メソッドがあります...プロセスは実行されません。標準出力に書き込む...パイプに書き込む予定です。プロセスが何を書き込んでいるかを確認したい場合は、getInputStream()によって返されたストリームから読み取る必要があります。

6.)

Cygwinを使用している場合は、バッチファイルを使用せず、代わりにBASHシェルスクリプトを使用してください(拡張子は「.sh」ファイル拡張子で表示される場合がありますが、拡張子は必要ありません)。

于 2010-03-26T06:49:08.297 に答える
0

私は誤解しているか単純化しすぎているかもしれませんが、あなたは単に Java プログラムを Java 内から実行しようとしているのですか? なぜそうではないのか:net.tinyos.sf.SerialForwarder.main(new String[] {"foo", "bar"}); あなたはすでに Java を使っているので、クラスのmain()メソッドを呼び出すだけです!

于 2010-03-26T13:28:02.160 に答える