私はJavaから呼び出しようとしているシェルスクリプトを持っています。シェルスクリプトは含まれています。私は使用しています私のJavaコードでJavaで.shを実行する
cat /dev/tty.USB0 > file.txt
:
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");
をしかし、それは動作しません。私はそれを期待どおりに動作する端末から実行します。
私はJavaから呼び出しようとしているシェルスクリプトを持っています。シェルスクリプトは含まれています。私は使用しています私のJavaコードでJavaで.shを実行する
cat /dev/tty.USB0 > file.txt
:
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");
をしかし、それは動作しません。私はそれを期待どおりに動作する端末から実行します。
実行可能ファイルではないため、.sh
スクリプトを直接実行することはできません。代わりに/bin/sh -c /home/myname/Scrivania/capture.sh
を実行する必要があります。
まず、JavaコードでOSベースの機能を操作するのは良いスタイルではありません。代わりに、私はあなたがシステム入出力ストリームだけで作業することをお勧めします。あなたのプログラムは、あなたのスクリプトの出力を処理する場合たとえば、あなたのような何かを行うことができます。
cat /dev/tty.USB0 > java YourMainClass
をし、その後System.in
を直接操作します。
プログラムがスクリプト出力コンシューマより複雑であっても、プログラムからすべてのOSベースの部品を削除するように書き換えることができます。これにより、コードがより安定して保守性に優れます。
あなたは何をしていますか?まあ、それはすべきです。
私の推測は間違っていると思われます。出力ファイル "file.txt"を間違った場所で探している可能性があります。
ここで少し実験
System.out.println("Output file - " + new File("file.txt"));
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");
最初の行は、あなたのファイルを検索する方法を教えてくださいです。
P.S.もちろん、java.io.Fileをインポートすることを忘れないでください:)
[JavaコードからUnixシェルスクリプトを実行するには?](http://stackoverflow.com/questions/525212/how-to-run -unix-shell-script-from-java-code) –